gpt4 book ai didi

java - 二分查找无法正确运行

转载 作者:行者123 更新时间:2023-12-01 22:15:08 25 4
gpt4 key购买 nike

我正在为动态数组类编写多重搜索算法,并尝试实现二分搜索,但我的程序无法正确设置整数 mid 的值。

以下是该方法的代码:

public static boolean search(int[] array, int value) {
int first = 0, last = array.length - 1, mid = ((first + last) / array.length);
System.out.println(first + " - " + mid + " - " + last);
while(true) {
System.out.println(first + " - " + mid + " - " + last);
if (value == array[mid]) {return true;}
if (first == last || mid == last || mid == first) {return false;}

if (value > array[mid]) {
first = mid;
mid = (first + last) / (last + 1);
}
if (value < array[mid]) {
last = mid;
mid = (first + last) / (last + 1);
}
System.out.println(first + " - " + mid + " - " + last);
}
}

我运行了该程序数百次测试,但是 mid 的值始终为 0(输出为 0 - 0 - 1117250 - 0 - 1270 - 0 - 15)。非常感谢所有帮助!

最佳答案

不应该:

mid = ((first + last) / array.length)

...实际上是这样的

mid = ((first + last) / 2)

...而不是让您获得mid

要获得两个值之间的中间值,您需要将两个值相加并除以 2

关于java - 二分查找无法正确运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31236782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com