黑马程序员技术交流社区

标题: 请教关于折半查找 [打印本页]

作者: doyxy    时间: 2013-12-26 22:43
标题: 请教关于折半查找
本帖最后由 doyxy 于 2013-12-26 22:48 编辑

看着毕向东老师的视频,写了一下折半查找函数,看起来代码都一样,为什么我查找出来的结果都是-1呢?谢谢

不好意思,是我自己弄错了,我随便写的一个数组,不是有序数组,不能用折半查找...

  1. //折半查找
  2. //从一个有序数组中查找一个给定的数值key.
  3. //思路:设置三个变量min,mid,max,mid为中间位置,如果key=arr[mid]则输出,
  4. //如果key>arr[mid],则将min改为mid+1,如果key<arr[mid],则将max改成mid-1;
  5. //如果min>max则说明数组中不存在要查找的数值.
  6. class  HalfSearch
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 int[] arr = {2,1,6,4,8};
  11.                 int index = halfSearch(arr,1);
  12.                 System.out.println("index="+index);
  13.         }
  14.         public static int halfSearch(int[] arr,int key)
  15.         {
  16.                 int min=0, max=arr.length-1, mid;
  17.                 mid = (min+max)/2;
  18.                 while (key!=arr[mid])
  19.                 {
  20.                         if (key>arr[mid])                        
  21.                                 min = mid+1;
  22.                         
  23.                         else if (key<arr[mid])                        
  24.                                 max = mid-1;               
  25.                         
  26.                         mid = (min+max)/2;                                                                        
  27.                 }
  28.                 return mid;
  29.         }
  30. }
复制代码




snap027.png (54.36 KB, 下载次数: 13)

snap027.png

作者: doyxy    时间: 2013-12-26 22:47
呃,不好意思,发现原来是因为数组不是有序数组
作者: 75100313    时间: 2013-12-26 22:49
{:soso_e113:}这个。。。。。
作者: 飞一样    时间: 2013-12-26 23:38
先排序,再折半,加油!




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