【发布时间】:2016-03-22 06:37:21
【问题描述】:
我需要为按升序排序的整数数组(即1,2,3,4...)实现递归二进制搜索算法。
我拥有的数组包含以下数字:
0 0 0 0 0 0 0 1 2 2 3 3 3 3 5 6 7 7 7 9
但是,我当前的二分搜索实现只能找到 3 右边的数字。由于某种原因,它找不到 9、7、6 和 5。
下面是我的代码:
private int srchHelper(int[] array, int first, int last, int x) {
if (first > last) return - 1;
int mid = (first + last) / 2;
if (array[mid] == x) {
return mid;
}
if (array[mid] < x) {
return srchHelper(array, (mid + 1), last, x);
}
else return srchHelper(array, (mid - 1), last, x);
}
【问题讨论】:
-
我昨天看到了这个问题,大约有3人评论了正确的答案。
-
如果你想向左走,你的
int first不是最左边的选项(first),而不是mid,最后不会是mid而不是last第一次去? -
@PaulBoddington 你有那个问题的链接,把它标记为重复吗?
标签: java recursion binary-search