• 时间复杂度


    时间复杂度:用来评估算法的运行效率的一个公式。

    其中的“1”、“n”是一个单位,表示几次

    第一个例子:

     1 print("hello world") ====> O(1)===>(运行一次)
     2 #--------------------------------------------------
     3 for i in range(n):
     4     print("hello world") ====>O(n) ====>(运行n次)
     5 #-------------------------------------------------
     6 for i in range(n):
     7     for j in range(n):
     8         print("hello world") ===>O(n**2) ===>(运行n的平方)
     9 #------------------------------------------------------
    10 for i in range(n):
    11     for j in range(n):
    12         for k in range(n):
    13             print("hello world")===>O(n**3) ====(运行n的三次方)  
          

    第二个例子:

    1 print("hello world")
    2 print("hello python")
    3 ======>O(1)
    4 for i range(n):
    5     print("hello world")
    6     for j in range(n):
    7         print("hello world")
    8 =======>正常算的应该是O((1+n)n)/O(n**2+n),但是在时间复杂度中只是表示大约的存在,所以我们写成O(n**2)

    第三个例子:

     1 while n > 1:
     2     print(n)
     3     n = n//2
     4 n = 64 输出:64、32、16、8、4、2 5  6 2**6 = 64
     7 log2 64 = 6
     8 #时间复杂度记为:O(log2 n/logn)  
     9 #如果你的代码是循环迭代折半时,肯定用logn
    10 该式时间复杂度表示为:O(log2 64)

    时间复杂度小结:

    一般来说,时间复杂度高的算法比复杂度低的算法慢;

    常见复杂度(按效率排序):

    O(1)<O(logn)<O(n)<O(nlogn)<O(n的平方) < O(n2 *logn)<O(n的三次方)

    技巧:如何简单快速的判断出算法的复杂度(适用于绝大多数的简单情况)

    1. 确定问题规模n

    2. 循环减半的过程--> logn

    3. k层关于n的循环 --->n^k

    复杂的情况:根据算法的执行过程判断

  • 相关阅读:
    for 循环、序列和range()
    Python 中的 / 运算符的一切运算结果都是浮点数
    web如何测试
    性能测试中会遇到的瓶颈
    APP测试之内存命令查询
    接口测试常见的题目
    接口测试基础知识
    异或和之和 异或问题
    DP?
    Matrix Power Series
  • 原文地址:https://www.cnblogs.com/xbhog/p/11706044.html
Copyright © 2020-2023  润新知