1. 程式人生 > >java 實現 的 lowerBound 函式 與 upperBound 函式

java 實現 的 lowerBound 函式 與 upperBound 函式

lower_bound演算法要求在已經按照非遞減順序排序的陣列中找到第一個大於等於給定值key的那個數,其基本實現原理是二分查詢,如下所示:

其中 r = nums.length

    public static int lowerBound(int []nums,int l,int r,int target){
        while(l<r){
            int m = (l+r)/2;
            if(nums[m]>=target) r= m;
            else    l = m +1;
        }
        return
l; }

upper_bound函式要求在按照非遞減順序排好序的陣列中找到第一個大於給定值key的那個數,其基本實現原理是二分查詢,具體實現如下所示:

其中 r = nums.length

    public static int upperBound(int []nums ,int l,int r, int target){
        while(l<r){
            int m = (l+r)/2;
            if(nums[m]<=target) l = m+1;
            else    r = m;
} return l; }