我对发生这种情况的确切位置感到困惑。我已经在纸上追踪了这个简单的代码并使用了计算机,但我无法弄清楚。在我的示例中,我创建了一个 {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;
}