解法 用二分查找,low和high相差为1时,low即为所求结果的下标。
public static int BinarySearchFunc(int[] array, int key) {
if (key > array[array.length - 1]) {
return array[array.length - 1];
}
int low = 0, hight = array.length, mid;
while (low <= hight) {
System.out.println("查找一次");
if (hight - low <= 1) {
break;
}
mid = (low + hight) / 2;
if (array[mid] > key) {
hight = mid;
} else {
low = mid;
}
}
return array[low];
}
复制代码