二分查找
在单调递增序列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];
本文作者:风归去
本文链接:https://www.cnblogs.com/N-lim/p/16906953.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步