私はこれがどこで起こるのか正確に混乱しています。私はこの単純なコードを紙で追跡し、コンピューターを使用しましたが、理解できません。私の例では、{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;
}