前端企业面试题:企业真实案例——29

实现一个二分法查找
var searchInsert = function(nums, target) {
    //确定左右边界索引
    let min = 0;
    let max = nums.length-1;
    while(min <= max) {
        let midIndex = (min+max)>>1; //向右移位,等价于除以2取整
        //找到了直接返回
        if( target == nums[midIndex] ) return midIndex; 

        //目标值比中间值大,最左边界从中间右移一位
        if( target > nums[midIndex] ) min = midIndex+1;  

        //如果目标值比中间值小,最右边界从中间左移一位
        else max = midIndex-1;
    }
    return min; //没找到时,则min==max,直接返回即可
};

猜你喜欢

转载自blog.csdn.net/GUDUzhongliang/article/details/108513933