对于不下降的序列a, n为序列a元素的个数,key为关键字。
1.求得最小的i, 使得a[i] = key, 若不存在,则返回-1.
int binary_search_2(int[] a, int n, int key) {
int m, l=0, r=n-1;//闭区间[0,n-1]
while(l<r) {
m = l+(r-l)/2;//向下取整
if(a[m]< key)
l = m+1;
else
r = m;
}
if(a[r]==key)
return r;
else
return -1;
}
2. 求得最大的i, 使得a[i] = key, 若不存在,则返回-1.
int binary_search_1(int[] a, int n, int key) {
int m, l=0, r=n-1;//闭区间[0,n-1]
while(l<r) {
m = l+(r+1-l)/2;//向上取整
if(a[m]<= key)
l = m;
else
r = m-1;
}
if(a[l]==key)
return l;
else
return -1;
}