码迷,mamicode.com
首页 > 编程语言 > 详细

Python语言算法的时间复杂度和空间复杂度

时间:2018-10-11 10:25:37      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:时间   nbsp   print   数量级   计算   修改   次数   运行时   规模   

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

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

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


计算时间复杂度的方法:

  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

 

 

Python语言算法的时间复杂度和空间复杂度

标签:时间   nbsp   print   数量级   计算   修改   次数   运行时   规模   

原文地址:https://www.cnblogs.com/kadycui/p/9770467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!