二分¶
约 113 个字 32 行代码 预计阅读时间 1 分钟
整数集合上的二分¶
在单调递增序列寻找某数或其后继¶
int binary_search(int l,int r,int x)
{
while(l < r)
{
int mid = (l + r) >> 1;
if(a[mid] >= x) r = mid;
else l = mid + 1;
}
return a[l]
}
在单调递增序列寻找某数或其前驱¶
int binary_search(int l,int r,int x)
{
while(l<r)
{
int mid = (l + r) >> 1;
if(a[mid] <= x) l = mid;
else r = mid - 1;
}
return a[l]
}
实数域上的二分¶
方法一¶
确定所需的精度 \(eps\) ,以 \(l+eps<r\) 为循环边界,接着内容与整数域的二分相同.
方法二¶
若精度 \(eps\) 难以确定,则可尝试固定循环次数,此方法精度通常比手动设定 \(eps\) 高.
最后更新:
2024年11月14日 21:30:17
创建日期: 2024年11月14日 21:30:17
创建日期: 2024年11月14日 21:30:17