标签:
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