1. 程式人生 > >Chapter3 複雜度分析(上):如何分析,統計演算法的執行效率和資源消耗

Chapter3 複雜度分析(上):如何分析,統計演算法的執行效率和資源消耗

資料結構解決的問題:“快” + “省”,即為時間,空間複雜度分析

1:為什麼需要複雜度分析?

因為通過統計手段分析的結果受到兩個因素的影響,一:測試結果非常依賴測試環境,二:測試結果受資料規模的影響很大

2:大O複雜度表示法

所有程式碼的執行時間T(n)與每行程式碼的執行次數n成正比。

T(n) = O(f(n))

3:時間複雜度分析漸進時間複雜度

1:只關注迴圈執行次數最多的一段程式碼

2:加法法則:總複雜度等於量級最大的那段程式碼的複雜度

3:乘法法則:巢狀程式碼的複雜度等於巢狀內外程式碼複雜度的乘積

4:幾種常見時間複雜度量級:

多項式量級:

常數階O(1)

u 對數階O(logn)

線性階O(n)

線性對數階O(nlogn)

平方階O(n*n),立方階O(n*n*n)… k方階O(n*……*n)

非多項式量級:

指數階O(2*……*2)

階乘階O(n!)

5:空間複雜度分析: 漸進空間複雜度

常見的空間複雜度:O(1) O(n) O(n*n)