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

JAVAd的二分查找


一、核心概念
二分查找也叫折半查找,是有序序列专属的查找算法。每次把查找范围缩小一半,查找效率远高于逐个遍历。
- 时间复杂度:O(\log n)
- 适用场景:仅支持有序、可随机访问的数据(如数组),不适合链表。
二、基础前提
1. 数据必须提前升序/降序排列,无序数据无法使用。
2. 依靠下标快速定位中间元素,顺序访问结构不适用。
三、执行流程(以升序为例)
1. 划定范围:设定左边界、右边界,初始分别指向序列第一个、最后一个元素。
2. 取中间位置:计算左右边界的中间位置。
3. 对比中间元素与目标值:
- 相等:查找成功,结束。
- 中间值 < 目标值:目标在右半区,更新左边界,舍弃左半部分。
- 中间值 > 目标值:目标在左半区,更新右边界,舍弃右半部分。
4. 循环重复上述步骤,直到找到目标;若左边界超过右边界,说明序列中无该元素,查找失败。
四、关键细节与易错点
1. 边界条件
循环判断必须使用「左边界 ≤ 右边界」,否则会漏掉最后一个待检查元素。
每次更新边界时,不能直接赋值为中间位置,必须在中间位置基础上±1,否则会陷入死循环。
2. 整数溢出问题
直接用「左+右」计算中间位置,数值过大时会出现整数溢出。
优化方式:用 左 + (右-左)÷2 计算中间位置,规避溢出风险。
五、Java 内置方法规则
Java 工具类自带二分查找方法,使用前同样要求数组有序:
- 找到目标:返回元素对应的下标。
- 未找到目标:返回负数,规则为 -(插入位置)-1 (插入位置指该元素有序存入数组时的位置)。
六、拓展:存在重复元素的场景
当序列中有多个相同目标值时,可改造算法查找边界:
1. 左边界:找到第一个等于目标值的元素。
遇到大于等于目标值的元素,就收缩右边界,最终校验左边界是否为目标值。
2. 右边界:找到最后一个等于目标值的元素。
遇到小于等于目标值的元素,就扩张左边界,最终校验右边界是否为目标值。
七、两种实现方式对比
1. 循环实现:主流用法,无栈溢出风险,执行效率更高。
2. 递归实现:逻辑易懂,依靠递归缩小区间;数据量极大时可能出现栈溢出,一般不推荐优先使用。

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

相关文章:

  • 3分钟搞定实时屏幕翻译:Translumo让你畅玩外文游戏无障碍!
  • 三极管(1):CMOS传输电平问题
  • 百万QPS RPC服务端线程池调优实录:从理论公式到16核16G极致压榨
  • pytorch点云深度学习相关库的安装
  • 专利检索数据库深度测评与排名:谁的数据更权威 - 资讯焦点
  • DSP563xx分布式信号处理系统:串口通信协议与KHOROS集成实战
  • 2026 烟台漏水检测电话|管道查漏水/消防 / 自来水管道测漏 TOP3 公司优选 - 资讯快报
  • 终极SPT-AKI存档编辑器完全指南:5分钟掌握单机塔科夫存档修改
  • 5大功能深度解析:Path of Building终极流放之路计算器完全指南
  • BetterNCM安装工具:3分钟掌握网易云音乐插件一键安装技巧
  • 有源滤波器与无功补偿厂家怎么选:重点看产品线完整度与系统配套能力 - 资讯焦点
  • 本地人私藏!杭州旅游必买清单:避开网红雷品,这6款地道特产闭眼囤 - 玖叁鹿
  • 人该怎样活着呢?版本71.8
  • STM32温控实战:从零构建高精度PID温度控制系统的避坑指南
  • 别再复制粘贴了!用Vue3 + weixin-js-sdk封装一个可复用的微信分享组件(附完整代码)
  • 【Linux】 章6 管理本地用户和组(RH124知识点问答题)
  • 终极指南:掌握microeco包在微生物组学数据深度分析中的应用
  • 2026年焕新:苏州铝合金遮阳棚,电动伸缩雨篷生产厂家5家企业实力剖析 苏州铝合金遮阳棚、电动伸缩雨篷生产厂家综合推荐分析报告 - 资讯快报
  • Linux系统编程-会话、守护进程与系统日志
  • 3分钟快速上手:用Video2X免费将低清视频无损放大到4K的完整指南
  • 福州市三菱重工空调维修师傅电话|各区金牌师傅,靠谱选欧米到家 - 欧米到家
  • 嵌入式UART转USB HID鼠标实现:基于NXP FRDM-KE15Z的协议桥接方案
  • 2026国内品质团建服务商排行:四大优质机构权威测评 - 陀螺团建
  • PowerPC处理器信号上拉下拉配置实战:从原理到PCB布局避坑指南
  • 终极指南:如何用Umi-OCR实现离线批量文字识别工作流自动化
  • 2026深圳选店不迷茫!全品类黄金回收排行干货一次性看懂 - 奢侈品回收测评
  • 2026 内蒙古文旅市场合规旅行社榜单发布:图腾国际蝉联综合实力榜首 - 互联网科技品牌测评
  • 西安企业大模型可见度诊断服务科普:3 分钟看懂 AI 时代企业增长新密码
  • Stable Baselines3:强化学习算法的可靠实现
  • Java招聘需求不断拔高,普通程序员如何破局?