基本思想
1、获取低位,高位下标,求出中位数
2、如果查找值key大于中位数,那么,数值key在右边。低位mid+1
3、再次判断low<=high , low=high为找到key的条件
4、如果查找值key小于中位数,那么,数值key在左边。高位mid-1
5、找到返回,反之返回错误结果
二分查找代码
public static int binarySearch(int[] array,int key){
int low = 0;
int high = array.length - 1;
int mid = 0;
//防越界
if (key < array[low] || key > array[high] || low > high) {
return -1;
}
while (low<=high){
mid = (low+high)/2;
if(key < array[mid]){
high = mid-1;
}else if(key > array[mid]){
low = mid+1;
}else {
return array[mid];
}
}
return -1;
}