Java:二分查找

标签 java binary-search

这是二分搜索算法的正确实现吗?它有效,但它是我想出的实现,与我的导师不同。谁能帮我在上面打个洞吗?

package algorithm.linearsearch;

公共(public)类 BinarySearch {

public static void main(String[] args) {
    System.out.println(binarySearch(
            new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 26, 109, 1001, 1100 },
            26));

}

private static int binarySearch(int[] array, int target) {
    int p = 0;
    int r = array.length - 1;
    int q;

    while (p <= r) {
        q = (p + r) / 2;
        if (array[q] == target) {
            System.out.println("value: " + array[q]);
            return q;
        }
        if (array[q] > target) {
            r = q + 1;
        } else {
            p = q - 1;
        }

    }

    return -1;

}

}

最佳答案

就这个

if (array[q] > target) {
    r = q + 1;
} else {
    p = q - 1;
}

应该是

if (array[q] > target) {
    r = q - 1; // index lower to current pivot
} else {
    p = q + 1; // index upper to current pivot
}

关于Java:二分查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45901216/

相关文章:

python - while循环不会在递归二分查找中停止

java - PKIX 路径构建失败 : sun. security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

java - == null 和 .equals ("null"之间有什么区别吗?

c++ - 高效实现二分查找

algorithm - 二进制搜索边界

c# - 查找排序数组中的所有差异

java - 替换任意长度的子串

java - 如何更新印度铁路网站中添加的 PNR 验证码

java - Spring MVC : Cannot convert value of type String to required type Category for property 'category'

Java最左二分查找