黑马程序员技术交流社区

标题: 大神们,怎么是死循环啊 [打印本页]

作者: rel4x    时间: 2014-9-16 20:06
标题: 大神们,怎么是死循环啊
本帖最后由 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);
         }

}


作者: fantacyleo    时间: 2014-9-16 20:11
本帖最后由 fantacyleo 于 2014-9-16 20:18 编辑

你的while循环没有退出机制。如果没找到就是无休止循环
作者: fantacyleo    时间: 2014-9-16 20:31
当min > max时,要退出while循环;当找到key时,也要退出while循环。完整的程序视频里有,你可以先照着视频里的程序抄几遍,把思路消化一下再自己默写出来




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