-
二分查找
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; else l=mid+1;
}
return l;
- 在单调递增区间

本文详细介绍了区间二分查找的基本概念、应用场景和注意事项。包括如何在单调递增区间中寻找第一个和最后一个满足条件的数,以及二分查找的不同写法。特别提到了在实数域上进行二分查找时的精度设定和防止死循环的策略。此外,还讨论了二分查找在解决最小化最大值或最大化最小值问题时的作用。最后,提醒在处理大区间时要考虑防止溢出,可以采用三分法作为替代。
最低0.47元/天 解锁文章
8202

被折叠的 条评论
为什么被折叠?



