二分法查找

来源:互联网 发布:软件缺陷生命周期 编辑:程序博客网 时间:2024/05/16 18:36


                                               二分法查找

(一)   二分法查找又叫折半查找,对于已经按从小到大排好序的数组a[],当要查找某个元素b的时候,先计算(a.length - 1)/2 把该位置上的元素与b比较,如果b比a[(a.length - 1)/2]小,则在a[(a.length - 1)/2]的左边区间找。这是再算出左边区间的中间下标,又把该位置上的元素与b比较,依次类推。



比如数组int  a[] = {2,11,15,19,30,32,61,72,88,90,96}现在要用二分法查找15

步骤如下,(a.length - 1)/2  = 5 ,a[5]= 32. 15< 32,所以在左区间找。 这时候{(a.length - 1)/2}/2 = 2

                  a[2]= 15,刚好 就找到了


代码如下:

public class ErFenFaSearch {public static void main (String args[]){int  a[] = {2,11,15,19,30,32,61,72,88,90,96};search(a, 0, a.length - 1, 30);}public static int search(int s[],int low ,int high,int value){ int mid;while(low < high){mid = (low + high)/2;if(value == s[mid]){System.out.print(mid);return  mid ;}else if(value< s[mid]){high = mid;}else if(value > s[mid]){low  =  mid;}}System.out.print(-1);return  -1;}

0 0