1. 程式人生 > 程式設計 >Python演算法的時間複雜度和空間複雜度(例項解析)

Python演算法的時間複雜度和空間複雜度(例項解析)

演算法複雜度分為時間複雜度和空間複雜度。

其作用:

時間複雜度是指執行演算法所需要的計算工作量;
而空間複雜度是指執行這個演算法所需要的記憶體空間。
(演算法的複雜性體現在執行該演算法時的計算機所需資源的多少上,計算機資源最重要的是時間和空間(即暫存器)資源,因此複雜度分為時間和空間複雜度)。

簡單來說,時間複雜度指的是語句執行次數,空間複雜度指的是演算法所佔的儲存空間

計算時間複雜度的方法:

  • 用常數1代替執行時間中的所有加法常數
  • 修改後的執行次數函式中,只保留最高階項
  • 去除最高階項的係數

時間複雜度

演算法的時間複雜度是一個函式,它定量描述了該演算法的執行時間,時間複雜度常用“O”表述,使用這種方式時,時間複雜度可被稱為是漸近的,它考察當輸入值大小趨近無窮時的情況

時間複雜度是用來估計演算法執行時間的一個式子(單位),一般來說,時間複雜度高的演算法比複雜度低的演算法慢

print('Hello world') # O(1)
# O(1)
print('Hello World')
print('Hello Python')
print('Hello Algorithm')
for i in range(n): # O(n)
 print('Hello world')
for i in range(n): # O(n^2)
 for j in range(n):
 print('Hello world')
for i in range(n): # O(n^2)
 print('Hello World')
 for j in range(n):
 print('Hello World')
for i in range(n): # O(n^2)
 for j in range(i):
 print('Hello World')
for i in range(n):
 for j in range(n):
 for k in range(n):
  print('Hello World') # O(n^3)

幾次迴圈就是n的幾次方的時間複雜度

n = 64
while n > 1:
 print(n)
 n = n // 2

26 = 64,log264 = 6,所以迴圈減半的時間複雜度為O(log2n),即O(logn)

如果是迴圈減半的過程,時間複雜度為O(logn)或O(log2n)

常見的時間複雜度高低排序:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n3)

空間複雜度

空間複雜度:用來評估演算法記憶體佔用大小的一個式子

a = 'Python' # 空間複雜度為1
# 空間複雜度為1
a = 'Python'
b = 'PHP'
c = 'Java'
num = [1,2,3,4,5] # 空間複雜度為5
num = [[1,4],[1,4]] # 空間複雜度為5*4
num = [[[1,2],2]],[[1,2]]] # 空間複雜度為3*2*2

定義一個或多個變數,空間複雜度都是為1,列表的空間複雜度為列表的長度

總結

以上所述是小編給大家介紹的Python演算法的時間複雜度和空間複雜度,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!