标签:
public class Demo { public static void main(String[] args) { System.out.println(search2(new int[]{1,4,5,9,11,23,25,33},7)); } public static int search(int[] arr,int key){ int start=0; int end=arr.length-1; while(start<=end){ int middle=(start+end)/2; if(key<arr[middle]){ end=middle-1; }else if(key>arr[middle]){ start=middle+1; }else{ return middle; } } return -1; } public static int search2(int[] arr,int key){ int start=0; int end=arr.length-1; int middle=(start+end)/2; while(arr[middle]!=key){ if(key<arr[middle]){ end=middle-1; }else{ start=middle+1; } if(start>=end){ return -1; } middle=(start+end)/2; } return middle; } }
二分法查找的思想:
1,前提是一个已经排好序的数组等。
2,每次取区间中间一个元素与目标元素对比大小。如果比目标元素大,则start=middle+1;否则,end=middle-1;
3,判别循环的条件。
标签:
原文地址:http://www.cnblogs.com/mapc/p/4931684.html