我想使用二進制搜索來查找元素應該放置的數組索引。這是爲了將元素插入到陣列中,同時向下移動較大的元素。如何修改這個二進制搜索以指定未找到的元素應該放置的位置?對於找不到元素的二進制搜索,如何返回它應該插入的索引
int binarySearch(int arr[], int x) {
int low = 0;
int mid = 0;
int high = arr.length - 1;
while (low <= high) {
mid = (low + high)/2;
if (x < arr[mid]) {
high = mid - 1;
} else if (x > arr[mid]) {
low = mid + 1;
} else {
return mid;
}
}
//This is what im trying to get to work
if (x < arr[mid]) {
return high;
} else {
return low;
}
}
謝謝。
和' - (x + 1)=〜x = -x -1',只是FYI :) – harold
@harold - 光滑! –