//二分查找
public static boolean BinarySearch(int target,int[] array){
int left = 0;
int right = array.length - 1;
while (left <= right) {
int middle = (left + right) / 2;//中间位置
if (array[middle] < target) {//小于关键字,舍弃左边
left = middle + 1;
} else if (target < array[middle]) {//大于关键字,舍弃右边
right = middle- 1;
} else {
return true;
}
}
return false;
}
//有时会出现left和right非常接近整型最大值的情况,这时如果再这样求中间位置就会出现溢出问题,因此要用代码 middle=left+(right-left)/2 代替。
//二者的功能等价,并且后者不会出现溢出问题
标签:int,算法,查找,array,排序,left
From: https://www.cnblogs.com/Yolanda-fan/p/18053958