美文网首页
二分查找

二分查找

作者: 欧耶90 | 来源:发表于2020-08-28 13:48 被阅读0次

    二分查找

    也叫折半查找,从有序列表的候选区li[0:n]开始,通过对 待查找的值和候选区中间值的比较,可以使候选区的值减少一半

    候选区

    1. left和right定义候选区的左侧下标和右侧下标
    2. mid代表了候选区的中间值

    代码实现

    def binary_search(li, val):
        """
        二分查找
        :param li: 有序列表
        :param val: 要查找的值
        :return: 返回下标或者None
        """
        # 定义初始候选区
        left = 0
        right = len(li)-1
    
        while left <= right:
            mid = (left+right) // 2
            if li[mid] == val:
                return mid
            elif li[mid] < val:  # 要查找的值在右侧可能存在
                left = mid + 1
            else:   # 要查找的值在左侧可能存在
                right = mid - 1
        else:   # 要找的值不在有序列表中
            return None
    
    
    print(binary_search([1, 3, 4, 6, 7, 9], 7))
    

    总结

    • 时间复杂度: O(logn)

    相关文章

      网友评论

          本文标题:二分查找

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