これは私の二分探索です:
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 の要素にアクセスしようとしました。
私の実装の何が問題になっていますか?