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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© rel4x 中级黑马   /  2014-9-16 20:06  /  879 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 rel4x 于 2014-9-16 20:08 编辑

class HalfsearchDemo
{
        public static void main(String[] args)
        {
                int [] arr = new int [] {1,3,4,6,9,10};
          halfsearch(arr,50);
        }

      public static void halfsearch(int[] arr, int key)
        {

                int max,min,mid;
                max=arr.length-1;
                min=0;
                mid=(max+min)>>1;

                while (arr[mid]!=key)
                {
               
                     if (key>arr[mid])
                        min=mid+1;
                        else if (key<arr[mid])
                        max=mid-1;
                                 if (max<min)
                        System.out.println("非法");
               
                        mid = (max+min)>>1;
                }
              System.out.println(mid);
         }

}

4 个回复

倒序浏览
本帖最后由 fantacyleo 于 2014-9-16 20:18 编辑

你的while循环没有退出机制。如果没找到就是无休止循环

点评

那要怎么做才行啊  发表于 2014-9-16 20:13
回复 使用道具 举报
当min > max时,要退出while循环;当找到key时,也要退出while循环。完整的程序视频里有,你可以先照着视频里的程序抄几遍,把思路消化一下再自己默写出来

点评

嗯嗯 谢谢了。。  发表于 2014-9-16 20:44
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马