二分法查找算法优化
摘要:使用位运算和减少计算次数的技巧优化二分查找算法。
在《算法——二分法查找》的二分法实现源码binarySearch_2实现中,可以发现计算了两次mid
,那有没有办法计算一次呢?另一方面,位运算min + (max - min) >> 1
还有其它等价实现方法吗?我带着这两个质疑写出了如下的实现方法,使代码更易读。
/**
* 根据元素大小进行二分法查找一返回下标
*
* @param arr 数组
* @param key 待匹配的值,看数组中是否存在
* @return key 在数组中的下标,如果是-1,就说明数组中不存在此元素
*/
public static int binarySearch_3(int[] arr, int key) {
// 最小值的下标
int min = 0;
// 最大下标,等于数组长度
int max = arr.length - 1;
while (min <= max) {
int mid = (max + min) >> 1;
if (arr[mid] > key) {
max = mid - 1;
} else if (arr[mid] < key) {
min = mid + 1;
} else {
return mid;
}
}
return -1;
}
瞧一瞧代码是否变得更简练了?老铁,你有更有效的实现策略吗?评论区等着你呢!
读后有收获,小礼物走一走,请作者喝咖啡。

作者:楼兰胡杨
本文版权归作者和博客园共有,欢迎转载,但请注明原文链接,并保留此段声明,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性