我很困惑,在這發生的確切位置。我已經在紙上追蹤了這個簡單的代碼,並使用了計算機,但我無法弄清楚。在我的例子中,我創建了一個{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