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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 初艳春 中级黑马   /  2012-11-24 21:56  /  1836 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 初艳春 于 2012-11-25 10:29 编辑

class Test
{
public static void main(String[] args)
{
  int[] a = {3,4,6,7,11,34,56};

  int index1=halfSearch(a,3);
     System.out.println("index1= "+index1);
}

public static int halfSearch(int[] a,int key)
{
  int min,max,mid;
    min=0;
    max=a.length-1;
    mid=(min+max)/2;
  while(a[mid]!=key)
  {
   if(key>mid)
    min=mid+1;
   else if(key<mid)
    max=mid-1;
   if(min>max)
    return -1;
   mid=(max+min)/2;
  }
  return mid;
  
}

}

怎么没有运行结果啊?

评分

参与人数 1技术分 +1 收起 理由
朱宏青 + 1 要细心..

查看全部评分

3 个回复

倒序浏览
本帖最后由 李靖 于 2012-11-24 22:24 编辑

我建议先弄懂原理,然后再写,其实代码实现不难。关键是做好注释。这样容易排错。
if(key>a[mid])
     min=mid+1;
    else if(key<a[mid])
    max=mid-1;
比较大小时,是和数组元素比较大小,而不是角标

评分

参与人数 1技术分 +1 收起 理由
朱宏青 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
谢谢各位指点,明白了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马