我想在已排序的数组中插入一个元素(替换现有元素)
[1, 2, 3, 4, 5]
例如,要插入0并保持顺序,应该将其替换为1。
[0, 2, 3, 4, 5]
为了插入6并保持顺序,应该用6替换5
[0, 2, 3, 4, 6]
我想使用二分查找,我创建了以下内容:
int binary_search(int *a, int first, int last, int x) {
int mid;
while (first <= last) { /* was <, changed to <= */
mid = (first + last) / 2;
if (a[mid] == x)
return mid;
else if (a[mid] > x)
last = mid - 1;
else
first = mid + 1;
}
/* after the loop => first = last */
if (a[first] > x)
return first;
else
return first + 1;
}
我是否漏掉了什么,如何证明我的所作所为能够产生始终正确的结果?