二分查找法

二分查找法,顾名思义,是一种一分为二的查找算法,适用于已排序的数组(大数据量),快速地找到所查找数的位置。

源代码:

Java代码  收藏代码
  1. /** 
  2.  * @param i 数组 
  3.  * @param key 要查找的Key 
  4.  * @return  
  5.  */  
  6. static int binarySearch(int[] i, int key){  
  7.     Arrays.sort(i);  
  8.     int low = 0;  
  9.     int high = i.length - 1;  
  10.     //int mid = (low + high)/2;        
  11.       
  12.     while(low <= high){              // 计算条件,数组低下标和高下标一直在计算中变化  
  13.         int mid = (low + high)>>1;   // 使用>>比除法计算效率高  
  14.         if(key > i[mid]){  
  15.             low = mid + 1;  
  16.         } else if(key < i[mid]) {  
  17.             high = mid - 1;  
  18.         } else {  
  19.             return mid;  
  20.         }  
  21.     }  
  22.       
  23.     return -1;  
  24. }  

原理:

         在数组中搜索给定Key时,先确定是有序数组,然后定义数组的最高下标和最低下标high、low,再求出数组的中间下标mid=(low+high)>>1。然后判断,当low<=high成立时,若数组[mid]值大于key时,将数组下标的底值提高为mid+1,反之将高值降低为mid-1,如此,每次将搜索的范围减小一半,大幅提高搜索效率。

附图:

posted on   ilinux_one  阅读(414)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示