gpt4 book ai didi

java - Binarysearch-Algorithm 代码问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:56 24 4
gpt4 key购买 nike

所以我一直在这段代码中寻找我的错误 10-20 分钟,但我仍然找不到任何错误。但是我发现(在最终添加了一个 systemout 之后)我的“中间”整数出了点问题,因为它 < 比最低数字(开始)

感谢任何帮助!

代码如下:

public class BinaereSuche {

public static int intList[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512};


public static int bineareSuche(int number){
int start = 0;
int end = intList.length -1;
boolean found = false;

while(found == false){
int middle = (end - start) / 2;

if(number > intList[middle]){
start = middle + 1;
}else if(number < intList[middle]){
end = middle - 1;
}else
return middle;
found = true;
System.out.println(intList[start] + " <--> " + intList[end] + " => " + intList[middle]);
} return -1;
}

public static void main(String[] args) {
System.out.println(bineareSuche(32));
}
}

系统输出给我 32 <--> 512 => 16
-1
其中 32 是起始数,512 是结束数,16 是 512 和 32 之间的中间数,这显然是错误的。

附注我一直在寻找关于 SO 的答案,但仍然无法找到我的问题——如果有人对它的工作原理感到好奇(如果你还不知道):Here's a picture

最佳答案

我认为这一行是错误的:

int middle = (end - start) / 2; 

尝试:

int middle = start + (end - start) / 2; 

考虑 end=10,start = 9。您的方法将计算 middle = 0。

关于java - Binarysearch-Algorithm 代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33467469/

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