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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM