A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© doyxy 中级黑马   /  2013-12-26 22:43  /  1037 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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, 下载次数: 19)

snap027.png

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

3 个回复

倒序浏览
呃,不好意思,发现原来是因为数组不是有序数组
回复 使用道具 举报
{:soso_e113:}这个。。。。。
回复 使用道具 举报
先排序,再折半,加油!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马