本帖最后由 茄子 于 2014-5-16 23:02 编辑
以下是老师基础教学视屏中的一段有关折半查找的排序,理论上应该返回-1,但是,真是运行结果确实抛出异常……这是为什么呢??以下是代码,运行平台是eclipse
public class halfRearch {
public static void main(String[] args) {
int[] arr={1,5,8,8,9,10,25,56};
int index=getIndex(arr,320);
System.out.println("index="+index);
}
public static int getIndex(int[] arr, int key){
int min=0;
int max=arr.length;
int mid=(min+max)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
if(min>max)
return -1;
mid=(min+max)/2;
}
return mid;
}
}
运行结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
at 黑马练习.halfRearch.getIndex(halfRearch.java:19)
at 黑马练习.halfRearch.main(halfRearch.java:11)
|