zoukankan      html  css  js  c++  java
  • python数据结构与算法之搜索

    搜索,顾名思义就是在一个序列中找出某个元素。

    二分查找

    二分查找只能作用于有序的顺序表中。

    def binary_search(alist, item):
        """二分查找,递归版"""
        n = len(alist)
        if n > 0:
            mid = n//2
            if alist[mid] == item:
                return True
            elif item < alist[mid]:
                return binary_search(alist[:mid],item)
            else:
                return binary_search(alist[mid+1:],item)
        return False
    
    
    if __name__ == '__main__':
        li = [17,20,26,44,45]
        print(binary_search(li,45))
        print(binary_search(li, 55))
    def binary_search(alist, item):
        """二分查找,非递归"""
        n = len(alist)
        first = 0
        last = n-1
        while first<=last:
            mid = (first+last)//2
            if alist[mid] == item:
                return  True
            elif item<alist[mid]:
                last = mid-1
            else:
                first = mid + 1
        return False

    二分查找时间复杂度是O(logn)

  • 相关阅读:
    二叉树层次遍历
    链表
    线段树加离散化
    前缀和
    RMQ(Range MinimumQuery)问题之ST算法
    2016"百度之星"
    2016"百度之星"
    Dragon Balls[HDU3635]
    Building Block[HDU2818]
    Dogs[HDU2822]
  • 原文地址:https://www.cnblogs.com/maxiaonong/p/10533653.html
Copyright © 2011-2022 走看看