黑马程序员技术交流社区

标题: Java基础 [打印本页]

作者: meng12    时间: 2015-5-7 11:39
标题: Java基础
class AddDemo
{
        public static void main(String[] args)
        {
                int[] arr = {2,4,6,8,12,24,35,46,56};
                int i = add(arr, 11);
                System.out.println("index="+i);
        }
        public static int add(int[] arr, int key)
        {
                int min = 0;
                int max = arr.length-1;
                int mid = (min+max)/2;
                while (mid<=max)
                {
                        mid = (min+max)/2;
                        if (key<arr[mid])
                        {
                                max = mid-1;
                        }
                        else if (key>arr[mid])
                        {
                                min = mid+1;
                        }
                        else       
                        return mid;                       
                }
                return min;
        }
}
请问这个程序的运行结果为什么是0?


作者: 敢舍弃么    时间: 2015-5-7 14:37
把while中的条件改成这样就可以了   while (min<=max)
作者: liquid1993    时间: 2015-5-7 15:14
while中mid换成min即可
作者: ReadCode    时间: 2015-5-7 15:33
其实就是min与max的值进行大小比较,然后在根据key值比较确定大小,while中的条件改成while(min<=max)就行了




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