Hello,大家好,我是disguiseFish
最近在卷算法,所以我决定,每天写一点算法提升自己的逻辑思维!接下来我会从简入深的顺序来卷算法,同时会把看过的算法记录在这个平台~ 共勉!!!
二分查找
什么是二分查找呢?
二分查找, 又为折半查找, 通过比较中间值, 使每一次比较都使搜索范围缩小一半.
时间复杂度为 O(Logn)
最坏情况下时间复杂度为 O(Logn)
最好情况下时间复杂度为 O(1) 直接就找到了
问题:
在给定的一串**有序**(默认升序)数组 nums 中, 给定一个 target , 如果值存在, 则返回下标值, 如果不存在, 返回 -1
思路:
步骤:
- 在有序数组中值 midmidmid 查找, 如果找到, 则直接返回
- target>midtarget > mid target>mid, 则扔掉 left, 反之扔掉 right 部分
- 在剩下的数组范围 执行 步骤1
如果上述循环穿透了整个数组范围, 仍没有返回, 说明没找到, return -1