我正在尝试稍微更改二进制搜索,因此我想找到最小索引,以便 Array[index] >= key. 因此,如果我有一个类似的数组int A[5] = {1,5,10,15,20}
并且我调用search(A, 12, 5)
(其中 5 只是数组的长度),它将返回=> 3
since A[3] = 15 >= 12
。如果我搜索超过 20 的东西,它只会给我5
返回或其他任意数字。
我正在尝试将它写得尽可能接近传统的二进制搜索。有什么帮助吗?
(这里是传统的二分查找)
int binarysearch(int A[], int key, int length) {
int low = 0;
int high = length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (key < A[mid]) {
high = mid - 1;
} else if (key > A[mid]) {
low = mid + 1;
} else {
return mid;
}
}
return -1;
}