public static int binarySearchSort(int[] array, int key) {
/*
* 需求:在一个有序数组中快速查找指定值
*
*
* 分析:
* A:定义一个头变量low,尾变量high
* B:定义一个中间值=(low+high)>>>1;
* C:定义一个变量获取中间值对应的所引值
* D:判断该值和要比较值的大小
* 大于:移动尾变量=中间值-1
* 小于:移动头变量=中间值+1
* 等于:返回中间值
* E:循环B-D,当low>=high时结束循环
* F:如果执行在这里说明没有找到 返回一个负值表示没有找到 通常返回-(low+1
*
*/
int low = 0;
int high = array.length - 1;
while (low >= high) {
int mid = (low + high) >>> 1;
int midVal = array[mid];
if (midVal > key) {
high = mid - 1;
} else if (midVal < key) {
low = mid + 1;
} else {
return mid;
}
}
return -(low+1);
}
|
|