-
二分查找
while(l<=r)
{
int mid=(l+r)/2;
if(val[mid]==x) return mid;
if(val[mid]<x) l=mid+1;
else r=mid-1;
}
很基础的板子,没啥可说
保证答案处于以内,循环一般以
结束,每次二分的中间值
会归于左半段或右半段
- 在单调递增区间
中查找第一个满足
的数(即
的数中最小的一个)
while(l<r)
{
int mid=(l+r)>>1;/*向下取整*/
if(a[mid]>=x) r=mid; el