數據結構&算法

https://www.cnblogs.com/LeeJD/p/12524855.htmlhtml


在分析算法效率時,常常關注如下兩種複雜度:算法

(1)最壞狀況複雜度:Tworst(n)函數

(2)平均複雜度:Tavg(n)spa

易知Tavg(n)<=Tworst(n)htm

注:通常分析最壞狀況複雜度,由於平均複雜度不容易找blog

下表可以比較直觀的看出各個複雜度的運行時間圖片

  1 2 4 8 16 32
C(常函數) 1 1 1 1 1 1
logn 0 1 2 3 4 5
n 1 2 4 8 16 32
nlogn 0 2 8 24 64 160
n2 1 4 16 64 256 1024
n3 1 8 64 512 4096 32768
2n 2 4 16 256 65536 4294967296
n! 1 2 24 40326 2092278988000 26313×1033

 

 

 

  

 

 

 

 

因此通常狀況下避免出現後兩種複雜度for循環

下圖是幾種複雜度的增加速度table

(圖片來自慕課,陳越姥姥那堂課)class

 

 

 

複雜度分析的竅門:

  1. 若已知T1(n) = O(f1(n))和T2(n) = O(f2(n)),則
    T1(n) + T2(n) = max(O(f1(n)),O(f2(n)))  (就是O(f1(n))和O(f2(n))的最大值)
    T1(n) × T2(n) = O(f1(n) × f2(n))

  2. for循環的T(n) = 循環次數 × 循環體代碼的複雜度
  3. if-else結構的複雜度取決於if的條件判斷複雜度兩個分支部分的複雜度,整體複雜度取三者中的最大值

 2020-03-19

相關文章
相關標籤/搜索