在一组排序数中,给定一个数,返回最接近且不大于这个数的位置,要求时间在O(logn)
用二分查找,low和high相差为1时,low即为所求结果的下标。
static int BSearch(int[] num, int key) {
if(key>num[num.length-1]){
return num[num.length-1];
}
int low = 0;
int high = num.length - 1;
int mid;
while (low <= high) {
if (high - low <= 1)
break;
mid = (high + low) / 2;
if (num[mid] > key) {
high = mid;
} else {
low = mid;
}
}
return num[low];
}