【算法】小白也能看明白的二分查找!

34 阅读1分钟

Hello,大家好,我是disguiseFish

最近在卷算法,所以我决定,每天写一点算法提升自己的逻辑思维!接下来我会从简入深的顺序来卷算法,同时会把看过的算法记录在这个平台~ 共勉!!!

二分查找

什么是二分查找呢?

二分查找, 又为折半查找, 通过比较中间值, 使每一次比较都使搜索范围缩小一半.

时间复杂度为 O(Logn)

最坏情况下时间复杂度为 O(Logn)

最好情况下时间复杂度为 O(1)  直接就找到了

问题:

在给定的一串**有序**(默认升序)数组 nums 中, 给定一个 target , 如果值存在, 则返回下标值, 如果不存在, 返回 -1

思路:

步骤:

  1. 在有序数组中值 midmidmid 查找, 如果找到, 则直接返回
  2. target>midtarget > mid target>mid, 则扔掉 left, 反之扔掉 right 部分
  3. 在剩下的数组范围 执行 步骤1

如果上述循环穿透了整个数组范围, 仍没有返回, 说明没找到, return -1