
二分查找算法
初始化变量:定义 循环条件:当 计算中间索引:使用 查找元素:检查数组中间位置的值是否等于目标值 结束条件:当
发布日期:2021-05-20 05:49:11
浏览次数:19
分类:精选文章
本文共 872 字,大约阅读时间需要 2 分钟。
二分查找是一种高效的查找算法,尤其适用于有序数组。它通过不断缩小查找范围来定位目标值的位置,时间复杂度为O(log n)。
二分查找的实现
public static int getIndex(int[] arr, int s) { if (arr != null) { int low = 0; int high = arr.length - 1; while (low <= high) { int index = (low + high) / 2; if (arr[index] == s) { return index; } else if (arr[index] < s) { low = index + 1; } else { high = index - 1; } } } return -1;}
代码解析
low
和high
,分别表示当前查找范围的开始和结束索引。low
小于等于high
时,继续循环。(low + high) / 2
计算当前中间索引。s
: - 等于则返回当前索引。
- 如果当前值小于
s
,说明目标值在右边的区间内,调整low
。 - 否则,目标值在左边的区间内,调整
high
。
low
大于high
时,退出循环,表示查找范围无效,返回-1。适用场景
- 在有序数据中快速定位特定元素。
- 适用于数组长度较大的情况,减少线性搜索的时间复杂度。
性能优势
- 时间复杂度:O(log n),查找速度随数组长度指数级减少。
- 空间复杂度:O(1),内部不使用额外空间。
这段代码通过递归缩小查找范围,确保在有序数组中高效定位目标值。
发表评论
最新留言
不错!
[***.144.177.141]2025年05月05日 07时29分52秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
failed to push some refs to git
2019-03-15
在苹果Mac上如何更改AirDrop名称?
2019-03-15
1110 Complete Binary Tree (25 point(s))
2019-03-15
541【毕设课设】基于单片机电阻电感电容RLC测量仪系统
2019-03-15
568【毕设课设】基于单片机多路温度采集显示报警控制系统设计
2019-03-15
基于8086交通灯系统仿真设计(微机原理设计资料)
2019-03-15
解读域名管理之:域名注册机构介绍
2019-03-15
找中位数
2019-03-15
这些运维发展方向及系统运维技能都不了解,怎么能吃透Linux??
2019-03-15
自动化测试——UI自动化测试的痛点
2019-03-15
如何将萌推商品主图、属性图、详情图批量保存到电脑的方法
2019-03-15
2021年N1叉车司机模拟考试及N1叉车司机考试软件
2019-03-15
【奇淫巧技】Java动态代理(JDK和cglib)
2019-03-15
【Stimulsoft Reports.Net教程】使用DesignerFx
2019-03-15
攻防世界 Pwn 新手
2019-03-15
mybtis-plus 出现 Wrong namespace
2019-03-15
用户登陆的验证码的制作
2019-03-16
升级java11后,maven命令打包报错
2019-03-16
springboot redis key乱码
2019-03-16