2024/1/24学习进度笔记

二分查找

 

问题:现在要从以上arr数组中查找数字key=4的元素位置,我们可以怎么做呢?

 

思路一:朴素做法,就是遍历数组arr,查找出数字4的位置,复杂度为O(n),那么有没有更高效的方法呢?下面介绍思路二——二分算法。

思路二:二分算法,时间复杂度为O(logn),这么高效,简直不要太爽!且看下面的分析。

前提:使用二分算法,数组一定要是有序的(单调的),不能是乱序!

令L=1, R=8, mid=(L+R)/2=4

第一步:比较arr[mid]=6>4,说明要在arr[L]….arr[mid-1]中找,R=mid-1=3

第二步:更新mid=(L+R)/2=2,比较arr[mid]=3<4,说明要在arr[mid+1]…arr[R]中找,L=mid+1=3

第三步:更新mid=(L+R)/2=3,比较arr[mid]=4,4==key,查找结束!返回结果为3

总结:以上步骤是不断地将当前查找的范围缩小为原来的一半,明显效率比线性查找要快很多,以上思路就是二分算法的实现方式,时间复杂度为O(logn)。

posted @   努力学习2333  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示