我很困惑,在这发生的确切位置。我已经在纸上追踪了这个简单的代码,并使用了计算机,但我无法弄清楚。在我的例子中,我创建了一个{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;
}
您如何使用调试器来追踪真实? – 2012-03-18 20:16:12
您有可能在哪一行上发布超出界限的机会吗? – mfrankli 2012-03-18 20:16:17
该部分:if(ar [mid] == num) – frozenxdreamer 2012-03-18 20:18:36