【发布时间】:2015-07-06 01:48:26
【问题描述】:
我正在为我的动态数组类编写多重搜索算法,并尝试实现二进制搜索,但我的程序不会正确设置整数 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 - 111725 或 0 - 0 - 127 或 0 - 0 - 15)。
非常感谢所有帮助!
【问题讨论】:
-
你能发一个minimal but complete program吗?这对您来说不应该付出更多的努力,但这将使我们能够简单地复制粘贴代码并运行它。
-
你试过调试你的程序吗?我怀疑您很快就能查明问题出在哪里。
-
@sstan 好了,我添加的只是方法足迹。
-
@TimBiegeleisen 我试过了,但它表明我的
mid分配有问题
标签: java search binary-search