二进制搜索实现中的错误

问题描述 投票:0回答:1

我曾尝试对二进制搜索程序进行编码,但实际上并没有用。

如果我输入一个与数组中元素相对应的字符串,例如“ banna”,则输出“ 0”,应该输出“ 1”]

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String[] word = {"appele", "banna", "cdfds", "dasdf", "esadfsdf"};
    String a = input.nextLine();
    int low = 0, high = word.length - 1;
    while (low <= high) {
        int mid = (low + high) / 2;
        if (word[mid].compareTo(a) > 0) {
            low = mid + 1;
            high = mid - 1;
        }
        if (word[mid].compareTo(a) < 0) {
            high = mid - 1;
        } else if (word[mid].compareTo(a) == 0){
            System.out.println("1");
        }
    }
    System.out.println("0");
}
java debugging binary-search
1个回答
-1
投票
if (word[mid].compareTo(a) > 0) { low = mid + 1; high = mid - 1; } if (word[mid].compareTo(a) < 0) { high = mid - 1; }

每个块应更改为高电平或低电平,但不能两者都更改。而且我认为比较是错误的方法。

可能会有更多错误,请参阅注释以获取有关调试的提示。
© www.soinside.com 2019 - 2024. All rights reserved.