二分查找
在单调递增序列a中查找>=x的数中最小的一个(即x或x的后继)
while(l<r) {
int mid=(l+r)/2;
if(a[mid]>=x)
r=mid;
else l=mid+1;
}
return a[l];
在单调递增序列a中查找<=x的数中最大的一个(即x或x的前驱)
while(l<r) {
int mid=(l+r+1)/2;
if(a[mid]<=x)
l=mid;
else r=mid-1;
}
return a[l];