gpt4 book ai didi

java - 二分查找中的索引越界异常

转载 作者:行者123 更新时间:2023-12-04 05:53:45 25 4
gpt4 key购买 nike

我对发生这种情况的确切位置感到困惑。我已经在纸上追踪了这个简单的代码并使用了计算机,但我无法弄清楚。在我的示例中,我创建了一个 {1, 2, 3, 4, 5} 数组,它对数字 4 和 5 产生了这个错误。它对数字 1、2 和 3 以及不在数组。请问有人可以帮忙吗?

public static int search(int[] ar, int num)
{
int low=0;
int hi=ar.length-1;
int mid=(low+hi/2);
while(hi>=low || mid<=low || mid>=hi )
{
if(ar[mid]==num)
{
return mid;
}
else if(ar[mid]>num)
{
hi=mid-1;
mid=(low+hi/2);
}
else
{
low=mid+1;
mid=(low+hi/2);
}
}
return -1;
}

最佳答案

mid=(low+hi/2);

您需要使用补语,以便在添加 low 和 hi 后进行除法。
mid=(low+hi) / 2;

此外,您的循环条件不应允许 mid > high,因为这样它就不会因不在数组中的大量数字而终止。

关于java - 二分查找中的索引越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9761868/

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