黑马程序员技术交流社区

标题: 基础视频第五天折半查找的代码。 [打印本页]

作者: 我本灬无名    时间: 2015-5-2 12:02
标题: 基础视频第五天折半查找的代码。
直奔主题,先看代码。


class ShuzuDemo
{
        /*
        练习查找法
        */
        public static void main(String[] args)
        {
                int[] arr ={1,5,7,11,14,17,19,20};//数组
                int index = halfSearch_2(arr,2);//功能
                System.out.println("index="+index);
        }
        public static int halfSearch(int[] arr,int key)
        {
                int max,min,mid;//定义三个变量
                min = 0;
                max = arr.length-1;
                mid = (min+max)/2;

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

                while (min<max)
                {
                        mid=(min+max)>>1;

                        if(key>arr[mid])
                                min=mid+1;
                        else if(key<arr[mid])
                                max=mid-1;
                        else
                                return mid;
                }
                return -1;
                return-min-1;
                return min-1;
               
        }
       
}

下边的三个return。

                return -1;
                return-min-1;
                return min-1;
并不是代码错误。而是今天要询问的问题。
请原谅楼主的渣渣水平。
楼主自己打出的代码是:return min-1;
第五天视频里毕向东老师打出的代码是: return -1;
第五天学习文档里给出的代码是:return-min-1;
当然啦,三个输出的结果都是一样的。
我想问的是,return-min-1;
这段代码所表示的意思。和return min-1;有什么区别。
实际应用中应该用哪一种方法。
谢谢,麻烦大家了。
作者: 黄冬    时间: 2015-5-2 12:32
while的判断条件改为while(min <= max),此时最下面就用return -1;就能得出正确的结果了。


作者: 我本灬无名    时间: 2015-5-2 13:05
黄冬 发表于 2015-5-2 12:32
while的判断条件改为while(min

那就是我这写错了。下载的文档也写错了是吧。




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