• 查找算法: 顺序查找 和 二分查找


    顺序查找:

      顺序查找也称为线性查找,时间复杂度为O(n),基本思想是从头遍历数据,直到遍历的数据和查找的数据一致。

      python列表中的index方法,也是顺序查找的一种。

    二分查找:

      进行二分查找的前提是:列表是有序的;时间复杂度:O(logn)

      基本思想,将待查找的值与列表中间的元素对比,然后更新列表的左或者右边界.重复直到找到该元素或者遍历全部元素.

    如何选择顺序查找还是二分查找:

      1.如果列表是有序的,优先二分查找

      2.如果列表是无序的,分2种情况:

        a. 查找次数较少,使用顺序查找

        b. 查找次数较多,先对列表进行排序,再使用二分查找

    顺序查找代码:

    def serial_find(li, item):
        '''顺序查找
        '''
        for i in range(len(li)):
            if li[i] == item:  # 列表的li[i],时间复杂度为O(1).
                return i 
        return None 
    
    
    print(serial_find([1,2,3,4,5,6,7,8], 3))

    二分查找:

    def binary_search(list, item):
        low = 0
        high = len(list) - 1
        
        while low <= high:
            mid = int((low + high) / 2)
            guess = list[mid]
            if guess == item:
                return mid
            if guess > item:
                high = mid - 1
            else:
                low = mid + 1
        return None
    
    my_list = [1, 3, 5, 7, 9]
    print(binary_search(my_list, 3))
  • 相关阅读:
    FORTRAN学习记录
    Ubuntu查看和自动挂载硬盘
    正则表达式批量重命名
    [USACO 09FEB]Fair Shuttle
    [ZJOI 2012]灾难
    [BJOI 2010]次小生成树Tree
    Python开发 第一篇 python的前世今生
    关于pycharm字体大小的调整
    关于"人工智能Python""系统环境变量设置步骤
    [洛谷P1168]中位数
  • 原文地址:https://www.cnblogs.com/lmt921108/p/14043222.html
Copyright © 2020-2023  润新知