• 时间复杂度---关于搜索


    如果我们想要在数组找到我想要的元素应该怎么办呢??

    def S1(a,L1):
        L2=[]
        for i in L1:
            if a == i:
                L2.append(i)
        return L2
    

    这种遍历的方法就行 复杂度是 O(len(L1)) 我们没次都是会做最坏打算的所有遍历是必须的

    这种方法实在是太慢,难道没有更好的方法吗?

    答案就是二分法(当然是有序数组)

     我们可以把数组中间的元素和我们要找的元素比较,然后如果中间的元素比较大 那么就把前面一段数组重复这个操作

     我们可以想象一下,每次重复操作范围都会除以2 那么这个算法肯定是对数级别的

    def serch1(a,L1):
        su = len(L1)
        if  su < 2:
            return False
        item = su/2if a < L1[item]:
            L1 = L1[:item]
            return serch1(a,L1)
        if a > L1[item]:
            L1 = L1[item:]
            return serch1(a,L1)
        if a == L1[item]:
            return item

    see 这个逻辑是不是很清晰 

  • 相关阅读:
    static关键字详解
    解读equals()和hashCode()
    基于马士兵老师的高并发笔记
    scrapy安装及基本使用
    scrapy 简单操作
    python django简单操作
    Map,Filter 和 Reduce
    2017-08-06笔记
    幂等性
    Jmeter jdbc连接
  • 原文地址:https://www.cnblogs.com/nerdlerss/p/5631359.html
Copyright © 2020-2023  润新知