【发布时间】:2014-01-21 00:21:46
【问题描述】:
我想在排序数组中插入一个元素(替换现有元素)
[1, 2, 3, 4, 5]
例如插入 0 并保持它应该替换 1 的顺序
[0, 2, 3, 4, 5]
并插入 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;
}
我是否遗漏了什么?我如何证明我所做的会导致始终正确的结果?
【问题讨论】:
标签: binary-search