美文网首页
《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 每日一学》之二分法查找

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