美文网首页
《Python 每日一学》之二分法查找

《Python 每日一学》之二分法查找

作者: 谢烟客 | 来源:发表于2018-09-26 13:29 被阅读26次

二分法查找

适用场景:

  1. 查找对象必须为有序集合,不然前置的排序工作影响较大
  2. 集合内的对象必须可任意访问,比如:链表就不适使用此方法
  3. 时间复杂度:O(log2n),n 表示元素个数
  4. 空间复杂度:S(n),n 表示元素个数

数学知识复习:

  1. log2n: log 以 2 为底 n 的对数
  2. 对数:如果 2 的 x 次方等于 n ,那么 x 就等于 log2n 的对数

代码实现:

def binary_search(needle, haystack):
    min, max = 0, len(haystack) - 1

    while min <= max:
        midpoint = (min + max) // 2    # 向下取整数
        guess = haystack[midpoint]
        if guess == needle:
            return midpoint
        elif guess > needle:
            max = midpoint - 1
        else:
            min = midpoint + 1
    
    return None

  • 交流可以加 QQ 群:397234385
  • 或者 QQ 扫码入群:
qq群.jpg

相关文章

  • 《Python 每日一学》之二分法查找

    二分法查找 适用场景: 查找对象必须为有序集合,不然前置的排序工作影响较大 集合内的对象必须可任意访问,比如:链表...

  • 二分法查找

    二分法基本查找 二分法遍历查找

  • 二分法查找

    二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法...

  • 刷前端面经笔记(九)

    1.JavaScript实现二分法查找? 二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找...

  • 查找算法

    三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表

  • 数据结构-递归

    二分法查找

  • 二分查找

    以二分法来提升查找效率 二分法查找到key的合适位置 put get delete 二分查找的查找操作为O(log...

  • 图解算法

    1. 数据查找之二分法 对象:数组 使用前提:已排序数组 时间复杂度:O(longn) 如下图我们需要在已排序数组...

  • 算法和排序

    1、线性查找 2、二分法查找 3、冒泡排序

  • 查找算法

    查找算法 顺序查找法 时间复杂度:O(n) 二分法查找 二分法查找适用于有顺序的序列 时间复杂度:O(n) 核心思...

网友评论

      本文标题:《Python 每日一学》之二分法查找

      本文链接:https://www.haomeiwen.com/subject/quidvxtx.html