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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

直奔主题,先看代码。


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;有什么区别。
实际应用中应该用哪一种方法。
谢谢,麻烦大家了。

2 个回复

正序浏览
黄冬 发表于 2015-5-2 12:32
while的判断条件改为while(min

那就是我这写错了。下载的文档也写错了是吧。
回复 使用道具 举报
while的判断条件改为while(min <= max),此时最下面就用return -1;就能得出正确的结果了。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马