這是我的二進制搜索:實現二進制搜索
int binarySearch(int arr[], int value, int min, int max){
int pos = -1;
while (max >= min && pos == -1) {
int mid = (max+min)/2;
if(arr[mid] == value){
pos = mid;
}else if(arr[mid] < value){
min = mid +1;
}else if(arr[mid] > value){
max = mid -1;
}
}
return pos;
}
我這樣調用它:
//Arr contain values 0-63
int i = binarySearch(arr, 64, 0, 64);
這些都是值中旬
32 48 56 60 62 63 64
在最後一次檢查我當陣列中的最後一個位置是63時,嘗試訪問位置爲64的元素。
我的實現有什麼問題?
我建議逐行檢查「max」,「min」和「mid」的值,在調試器中逐行執行代碼。還要確保數組實際上已排序。 –
代碼可以在代碼塊上正常運行。 確保陣列已排序幷包含正好64個元素 –
-1用於在聊天中轉儲鏈接。 – Puppy