【问题标题】:How to implement a recursive binary search algorithm? [duplicate]如何实现递归二分搜索算法? [复制]
【发布时间】: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


【解决方案1】:

确保您清楚算法的作用,然后仔细查看您的递归调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多