【发布时间】:2020-06-18 22:39:23
【问题描述】:
我正在尝试稍微更改二进制搜索,因此我不想仅在元素在数组中时才找到元素的索引,而是要找到 Array[index] >= key.因此,如果我有一个像int A[5] = {1,5,10,15,20} 这样的数组并且我调用了search(A, 12, 5)(其中5 只是数组的长度),它将返回=> 3,因为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;
}
【问题讨论】:
标签: binary-search