二分查找:(Binary Search) 只适用有序序列
二分查找 (迭代实现)
int bsearch(int *A,int l,int r,int key)
{
int m;
while(l<r)
{
m = l+(r-l)/2;
if(key == A[m]) return m;
else if (key < A[m]) r = m;
else l = m+1;
}
return -1;
}
下界:(lower_bound)当key存在return第一次出现的位置,如果不存在return 一个下标 i(把key插入i位置,序列仍有序).
上界:(up_bound)当key存在return最后一次出现的位置的下一个位置,如果不存在return 一个下标 i(把key插入i位置,序列仍有序).
找下界:
int lower_bound(int *A,int l,int r,int key)
{
int m;
while(l<r)
{