二分查找(存在重复找到第一个的位置)

在这里插入图片描述

/**
 * 二分查找
 * @param n int整型 数组长度
 * @param v int整型 查找值
 * @param a int整型一维数组 有序数组
 * @return int整型
 */
function upper_bound_( n ,  v ,  a ) {
    
    
    // write code here
    function BinarySearch(i,j,arr,k){
    
    
        let left = i;
        let right = j;
        var result = arr.length+1
        while(left<right){
    
    
            let mid = left+right >> 1
            if(arr[mid]>=k){
    
    
                right = mid
                result = mid+1
            }else if(arr[mid]<k){
    
    
                left = mid + 1
            }
        }
        return result
    }
    return BinarySearch(0,n-1,a,v)
}
module.exports = {
    
    
    upper_bound_ : upper_bound_
};

猜你喜欢

转载自blog.csdn.net/weixin_45284354/article/details/113836752