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
 

猜你喜欢

转载自www.cnblogs.com/kadycui/p/9770467.html