我試圖改變二分查找有點,所以而不是隻找到一個元素的索引當且僅當它是在數組中,我想查找最小索引,使得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;
}