java 實現 的 lowerBound 函式 與 upperBound 函式
阿新 • • 發佈:2018-12-14
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;
}