黑马程序员技术交流社区

标题: 运行结果有问题 [打印本页]

作者: 杨胜男    时间: 2014-6-8 11:44
标题: 运行结果有问题
/*
数组的查找操作。
折半查找
*/
class ArrayTest4
{
        public static void main(String[] args)
        {
                int[] arr = {2,4,5,7,8,19,32,45};
                int index=find(arr, 45);
                System.out.print("index="+index);
        }
       
        public static int find(int[] arr,int key)
        {
                int min=0, max=arr.length-1, mid;
                while (min<=max)//这里为什么要min<=max,写成min<max,运行结果就是-1?
                {
                        mid=(min+max)/2;

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

作者: 心灵的微幸福    时间: 2014-6-8 12:08
因为传入的数字正好是该集合的最大值, find方法返回的是mid值,mid等于最大值时,max和min都要等于最大值,
如果不判断min=max 的情况,那么是得不到该数组的最大值的,所以你的结果 会等于-1.





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