本帖最后由 javaking 于 2015-6-28 16:21 编辑
刚才看java视频发现一个二分查找的问题 请各位大大指教一下
- class Erfen
- {
- public static void main(String[] args)
- {
- int[]arr={23,34,45,56,78,89,101};
- // 0 1 2 3 4 5 6
- int num=sel(arr,891);
- System.out.println("要查找的数值角标为"+num);
- }
- public static int sel(int[]arr,int key)
- {
- int min,mid,max;
- min=0;
- mid=(0+arr.length-1)/2;
- max=arr.length;
- while(key!=arr[mid])
- {
- if(key>arr[mid])
- {
- min=mid+1;
- }
- else if(key<arr[mid])
- {
- max=mid-1;
- }
-
- if(min>max)
- /*视频此处为min>max;但是我查找一个数比数组最大值还大的时候,编译器报
- 错,提示ArrayIndexOutOfBoundsException
- 修改为 min>mid 就报-1了
- */
- {
- return -1;
- }
- mid=(min+max)/2;
- }
- return mid;
- }
- }
复制代码 if(min>max) /*视频此处为min>max;但是我查找一个数比数组里最大值还大的时候,编译器报
错,提示ArrayIndexOutOfBoundsException
修改为 min>mid 就报-1了
*/
请问这一块是不是视频里错了~~
|
|