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)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通