首页 > 其他 > 详细

二分查找

时间:2019-10-12 14:16:35      阅读:72      评论:0      收藏:0      [点我收藏+]

########################################

二分查找,是一种算法,又称之为折半查找,对于待查找的序列要求必须是有序的。

  步骤:每次取中间位置的值与待查找的值进行比较,如果中间位置的值比待查值大,则在前半部分循环这个查找过程;如果中间位置的值比待查值小,则在后半部分循环这个查找过程。一直查找到为止,否则序列中没有待查找的值。

 

  比如给定一个数组 [] a={2,3,6,8,9,11,14};

  假如我们找的是a[i]=8这个值的话,因为它在中间位置,就直接返回其数组的下标;

  假如要找的是a[i]=3,则用中间位置的值(8)与待查值(3)进行比较,发现比中间值小,则在左边部分循环进行二分查找,找到值为3对应的位置。

  假如要找的是a[i]=14,则用中间位置的值(8)与待查值(14)进行比较,发现比中间值大,则在右边部分循环进行二分查找,找到值为14对应的位置。

########################################

  接下来看代码的具体实现:

 1 public static int BinarySearch(int []array,int a){
 2     int lo=0;
 3     int hi=array.length-1;
 4     int mid;
 5     while(lo<=hi){
 6         mid=(lo+hi)/2;    //中间位置
 7         if(array[mid]==a){
 8             return mid+1;
 9         }else if(array[mid]<a){     //向右查找
10             lo=mid+1;
11         }else{     //向左查找
12             hi=mid-1;
13         }
14     }
15     return -1;
16 }                    

 

二分查找

原文:https://www.cnblogs.com/HuiH/p/11661065.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!