算法的時間複雜度是一個函數,它定量描述了該算法的運行時間,時間複雜度經常使用「O」表述,使用這種方式時,時間複雜度可被稱爲是漸近的,它考察當輸入值大小趨近無窮時的狀況python
時間複雜度是用來估計算法運行時間的一個式子(單位),通常來講,時間複雜度高的算法比複雜度低的算法慢算法
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)blog
若是是循環減半的過程,時間複雜度爲O(logn)或O(log2n)排序
常見的時間複雜度高低排序:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n3)內存
空間複雜度:用來評估算法內存佔用大小的一個式子it
a = 'Python' # 空間複雜度爲1 # 空間複雜度爲1 a = 'Python' b = 'PHP' c = 'Java' num = [1, 2, 3, 4, 5] # 空間複雜度爲5 num = [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]] # 空間複雜度爲5*4 num = [[[1, 2], [1, 2]], [[1, 2], [1, 2]] , [[1, 2], [1, 2]]] # 空間複雜度爲3*2*2
定義一個或多個變量,空間複雜度都是爲1,列表的空間複雜度爲列表的長度class