二分查找算法有两个关键点:
1.判断循环是否终止的条件
2.边界值left,right和middle的确定
Java实现:
/**
* 二分查找
* @param array 数组
* @param n 数组大小
* @param value 查找值
* @return
*/
private static int BinarySearch(int[] array,int n,int value){
int left=0;
//如果令right=n,循环条件为left<right;更新右边界时,right=middle
int right=n-1;
while(left <= right){
int middle=left+((right-left)>>1);
if (array[middle] > value) {
right=middle-1;
} else if (array[middle] < value) {
left=middle+1;
}
else {
return middle;
}
}
return -1;
}