本帖最后由 北风 于 2014-9-27 22:19 编辑
楼主开始看毕老师的视频了,可能是刚开始热情高涨的原因。今天一天看了50多段了已经。就在刚刚,看到了数组中的折半查找方法的讲解视频。
在视频中,毕老师说了一个面试练习题:有一个有序的数组,将某元素插入到该数组中,要保证插入后的数组是有序的,问该插在数组的哪个位置?
可能是听了一天的视频,大脑有点疲惫的原因。听懂了老毕讲的折半查找的方法,但是对于这个练习题中折半查找方法的延伸。。还是有点不太懂 。。为什么会返回min呢,我的疑问是因为在查找时有两个移动的下边界min和上边界max,能用max来作为要插入的数组位置返回吗?如果不能,想问,为什么?谢谢,希望大家解惑。- public static int halfSearch_2(int [] arr, int key){
- int min = 0, max = arr.length-1, mid;
- while (min<=max) {
- mid = (max+min)>>1; //位运算右移一位
- if(key>arr[mid])
- min = mid + 1;
- else if(key<arr[mid])
- max = mid -1 ;
- else
- return mid; //返回值
- }
- return -1 ; //帖子中的联系题的代码就是将该句代码改为了 return min;
- }
复制代码
注:return -1 ; //帖子中的联系题的代码就是将该句代码改为了 return min;
|
|