二分查找

  • 时间复杂度:O(logn)
  • 在一个区间[l,h]中查找,起初l=0,h=n-1.然后用区间的中间值m=[(l+h)/2]来测试函数f。根据前面的计算结果,查找空间缩小为[l,m]或[m+1,h]。注意,在计算m的时候向下取整,这样,第二个区间就永远不会为空,第一个也是。在[log2(n)]次迭代后,即查找区间缩小为单元素的时候,查找结束。
  • 查找次数log2(n)
  • def binary_search(list, item):
        low = 0
        high = len(list) - 1
    
        while low <= high:        #判断是否缩到一个元素
            mid = (low + high) /2
            guess = list[mid]
            if guess == item:    #查到要的元素
                return mid
            elif guess > item:
                high = mid - 1
            else:
                low = mid + 1
        return None

     

posted @ 2019-02-10 17:30  WaltHwang  阅读(109)  评论(0编辑  收藏  举报