黑马程序员技术交流社区

标题: 得到的结果不是想要的,哪里出问题了?求指点 [打印本页]

作者: 李前进    时间: 2014-3-16 12:12
标题: 得到的结果不是想要的,哪里出问题了?求指点
  1. class  HalfSearch
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //折半查找
  6.                 int arr[]={5,1,6,4,2,8,9};
  7.                 int index=halfSearch(arr,2);
  8.                 System.out.println("2所在位置下角标为:"+index);
  9.         }

  10.             //折半查找,效率高,但是必须保证数组为有序数组
  11.                 public static int halfSearch(int[] arr,int key)
  12.             {
  13.                         //int min=0,max=arr.length-1,mid=(max+min)/2;

  14.                         int min,max,mid;

  15.                         min=0;
  16.                         max=arr.length-1;
  17.                         mid=(max+min)/2;

  18.                         while(arr[mid]!=key)
  19.                         {
  20.                                 if(key>arr[mid])
  21.                                         min=mid+1;
  22.                                 else if(key<arr[mid])
  23.                                         max=mid-1;

  24.                                 if(min>max)
  25.                                         return -1;
  26.                                 mid=(mid+max)/2;
  27.                         }
  28.                         return mid;

  29.                 }
  30. }
复制代码

作者: 李前进    时间: 2014-3-16 12:14
数组是拷贝过来的,忘了该数组了。。。。。。:L
作者: 李前进    时间: 2014-3-16 12:15
折半查找只适合于有序的数组!
作者: 郝大龙0104    时间: 2014-3-16 14:04
Arrays.sort(arr);   加上这一句  对数组进行升序排列。。
作者: 骑着毛驴去赶    时间: 2014-3-16 18:38
要用sort方法对原数组进行排序啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2