黑马程序员技术交流社区

标题: 急!关于数组的,各位帮忙看看。。。 [打印本页]

作者: 初艳春    时间: 2012-11-24 21:56
标题: 急!关于数组的,各位帮忙看看。。。
本帖最后由 初艳春 于 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;
  
}

}

怎么没有运行结果啊?

作者: 李靖    时间: 2012-11-24 22:15
本帖最后由 李靖 于 2012-11-24 22:24 编辑

我建议先弄懂原理,然后再写,其实代码实现不难。关键是做好注释。这样容易排错。
if(key>a[mid])
     min=mid+1;
    else if(key<a[mid])
    max=mid-1;
比较大小时,是和数组元素比较大小,而不是角标
作者: 初艳春    时间: 2012-11-25 10:28
谢谢各位指点,明白了。




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