当前位置: 首页 > news >正文

二分查找与二分答案模板

二分查找

首先是二分查找:

二分查找,顾名思义,就是不断折半查找。每次取中间的数跟目标比,如果中间的数小了,说明目标在右边,就把左边缩到mid+1;如果中间的数大了,说明目标在左边,就把右边缩到mid-1。这样每次都能扔掉一半的数据,很快就能找到。

以下是普通的写法:

int ef(int x) { int l=1,r=n; while(l<=r) { int mid=(l+r)/2; if(a[mid]==x) return mid; if(a[mid]<x) l=mid+1; else r=mid-1; } return -1; }

这样写就是最常见的闭区间二分查找。l和r分别表示当前查找范围的左右边界,一开始l=1(第一个位置),r=n(最后一个位置)。每次取中间位置mid,然后比较a[mid]和x:

  • 如果相等,说明找到了,直接返回mid

  • 如果a[mid] < x,说明x在右边,把l移到mid+1

  • 如果a[mid] > x,说明x在左边,把r移到mid-1

循环条件是l <= r,意思是只要区间里还有数就继续找。当l > r的时候,说明区间空了,x不在数组里,返回-1。

举个例子

数组:1 2 3 4 5 6 7 8 9 10,找5

开始:l=1, r=10
mid=5 → a[5]=5,找到了,返回5

找11:

l=1, r=10
mid=5 → a[5]=5 < 11 → l=6
mid=8 → a[8]=8 < 11 → l=9
mid=9 → a[9]=9 < 11 → l=10
mid=10 → a[10]=10 < 11 → l=11
现在l=11, r=10,l > r,循环结束,返回-1

找0:

l=1, r=10
mid=5 → a[5]=5 > 0 → r=4
mid=2 → a[2]=2 > 0 → r=1
mid=1 → a[1]=1 > 0 → r=0
l=1, r=0,l > r,结束,返回-1

为什么mid+1和mid-1

因为mid已经比较过了,确定不是x,所以下一次查找的范围可以把它排除掉。左边就从mid+1开始,右边就到mid-1为止。

这种写法的几个注意点
  1. 循环条件是l <= r,不是l < r。如果写成l < r,当l和r相等的时候循环就退出了,但l和r相等的时候那

http://www.jsqmd.com/news/826490/

相关文章:

  • 【BUUCTF】【WEB】Nmap
  • AI时代PPT实战:产品思维与AI辅助的高效演示方法论
  • Maven依赖裁剪插件paperclip-plugin-acp实战:Spring Boot瘦身利器
  • 书成紫微动,律定凤凰驯:从无心创作到天命显化的海棠山铁哥之路
  • Go语言构建高并发实时流媒体服务器:dundas/liveport架构与实战
  • Ketcher分子编辑器实战指南:从基础绘图到高级生物分子设计
  • BilibiliDown:零基础小白也能轻松下载B站视频的完整指南
  • 西安电子科技大学网络对抗原理选修课实验2-基于Snort的入侵检测实验
  • 2026年评价高的洛阳流行舞蹈培训/洛阳舞蹈培训/洛阳零基础舞蹈培训/洛阳爵士舞培训哪家专业 - 行业平台推荐
  • 如何通过Perseus实现碧蓝航线皮肤解锁与游戏深度定制
  • AI技能库实战指南:结构化Prompt与自动化流程提升内容创作效率
  • Proxima向量检索库:硬件优化与量化技术实战解析
  • 代码审查时最该关注的不是语法,而是这五个“坏味道”
  • 毕业论文写不好别慌!这 3 款神器让你轻松搞定格式排版和论文查重(重复率、AI疑似率)
  • 从“租赁”到“共生”:江南北机器人如何重构企业与AI的协作关系
  • AI规则引擎:构建可控智能应用的核心架构与实践
  • 我电脑上安装的cli工具复盘
  • 【建筑学研究降维打击】:为什么顶尖事务所已禁用传统文献管理?NotebookLM智能溯源+跨语言规范比对实战拆解
  • 如何提升宝塔面板文件管理效率_使用SSH命令与Web端结合.txt
  • 开源项目安全加固实战:从最小权限到自动化部署
  • ARM LT-XC5VLX330 FPGA架构与配置系统详解
  • ARM PMUv3架构详解与性能监控实战
  • 2026年知名的洛阳零基础舞蹈培训/洛阳古风舞蹈培训/洛阳爵士舞培训家长好评推荐 - 品牌宣传支持者
  • 接手遗留系统第一周,我做了三件事,团队从此不再怕改老代码
  • Python3 元组(Tuple)全方位深度指南
  • 2026年步步升不锈钢玻璃别墅大门/铝卡别墅大门/铸铝别墅大门厂家对比推荐 - 品牌宣传支持者
  • QT视图界面
  • 从AMBA 2.0到AMBA 5:老司机带你回顾总线协议演进,聊聊CHI和ACE那些事
  • 【架构实战】百万级Excel数据导入的“坑”与“填坑”指南(上):痛点剖析与破局利器 EasyExcel
  • 基于RAG与LLM的法律合规助手:架构、实现与工程实践