美文网首页
二分查找

二分查找

作者: AustinWeii | 来源:发表于2018-12-19 21:11 被阅读0次

    给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。

    样例
    在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。

    挑战
    如果数组中的整数个数超过了2^32,你的算法是否会出错?

    /**
     * @param nums: The integer array.
     * @param target: Target to find.
     * @return: The first position of target. Position starts from 0.
     */
    const binarySearch = function (nums, target) {
        var left=0,right=nums.length,res;
        while(left<=right){
            var mid=Math.floor((left+right)/2);
            if (nums[mid]===target) {
                res=mid;
            } 
            if(nums[mid]>=target){
                right=mid-1;
            }else{
                left=mid+1;
            }
        }
        if(nums[res]!=target){
            res= -1;
        }
        return res;
    }

    相关文章

      网友评论

          本文标题:二分查找

          本文链接:https://www.haomeiwen.com/subject/eyuskqtx.html