zoukankan      html  css  js  c++  java
  • Python语言算法的时间复杂度和空间复杂度

    算法复杂度分为时间复杂度和空间复杂度。

    其作用:
    时间复杂度是指执行算法所需要的计算工作量;
    而空间复杂度是指执行这个算法所需要的内存空间。
    (算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度)。

    简单来说,时间复杂度指的是语句执行次数,空间复杂度指的是算法所占的存储空间


    计算时间复杂度的方法:

    1. 用常数1代替运行时间中的所有加法常数
    2. 修改后的运行次数函数中,只保留最高阶项
    3. 去除最高阶项的系数

    按数量级递增排列,常见的时间复杂度有:
    常数阶O(1),对数阶O(log2n),线性阶O(n),
    线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3),…,
    k次方阶O(n^k),指数阶O(2^n)
    随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。

    1.时间复杂度

     1 print('Hello world') # O(1)
     2  
     3  
     4 # O(1)
     5 print('Hello World')
     6 print('Hello Python')
     7 print('Hello KadyCui')
     8  
     9  
    10 for i in range(n): # O(n)
    11     print('Hello world')
    12  
    13  
    14 for i in range(n): # O(n^2)
    15     for j in range(n):
    16         print('Hello world')
    17  
    18  
    19 for i in range(n): # O(n^2)
    20     print('Hello World')
    21     for j in range(n):
    22         print('Hello World')
    23  
    24  
    25 for i in range(n): # O(n^2)
    26     for j in range(i):
    27         print('Hello World')
    28  
    29  
    30 for i in range(n):
    31     for j in range(n):
    32         for k in range(n):
    33             print('Hello World') # O(n^3)

    2.空间复杂度

     1 a = 'Python' # 空间复杂度为1
     2  
     3  
     4 # 空间复杂度为1
     5 a = 'Python'
     6 b = 'PHP'
     7 c = 'Java'
     8  
    10 num = [1, 2, 3, 4, 5] # 空间复杂度为5
    11  
    12  
    13 num = [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]] # 空间复杂度为5*4
    14  
    15  
    16 num = [[[1, 2], [1, 2]], [[1, 2], [1, 2]] , [[1, 2], [1, 2]]] # 空间复杂度为3*2*2
    
     
  • 相关阅读:
    《学习之道》第六章总结
    《学习之道》第六章一心多用
    《学习之道》第六章无视干扰
    《学习之道》第六章番茄工作法
    《学习之道》第六章关注过程,亦培养习惯
    《学习之道》第六章学习方法23与小恶魔较劲
    《学习之道》第六章习惯的部分-信念
    《学习之道》第六章习惯的部分-奖励机制
    《学习之道》第六章习惯的部分-反应程序
    使用Python验证常见的50个正则表达式
  • 原文地址:https://www.cnblogs.com/kadycui/p/9770467.html
Copyright © 2011-2022 走看看