废话不多说,先来程序.一步一步看注释,
首先要注意:使用二分法时,数组必须是有序的,也就是从大到小或者从小到大的,不能是无序的
public static int halfSearch(int[] arr,int key){
int min,max,mid;//分别为最小值,最大值,和中间值
min = 0;
max = arr.length - 1;
mid = (max + min)/2;//这应该就是二分的核心了,
//当key = arr[mid]说明已经找到了这个数据,所以while循环的条件是!=
while(arr[mid] != key){
if(key > arr[mid]){
min = mid + 1;
}else if(key < arr[mid]){
max = mid - 1;
}
if(max < min){
return -1;
}
mid = (max + min)/2;
}
//返回值为对应key值得下标
return mid;
}本文出自 “12248949” 博客,请务必保留此出处http://12258949.blog.51cto.com/12248949/1895033
原文:http://12258949.blog.51cto.com/12248949/1895033