如何評估遞歸算法的複雜度
整理如下表
掌握時間複雜度細則可以更好的優化代碼性能
遞歸關係 | 結果 | 舉例 |
---|---|---|
f(n)=f(n/2)+O(1) | O(logn) | 二分查找,歐幾里得gcd |
– | – | – |
f(n)=f(n-1)+O(1) | O(n) | 線性查找 |
– | – | – |
f(n)=2f(n/2)+O(n) | O(n logn) | 歸併,快排 |
– | – | – |
f(n)=2f(n/2)+O(1) | O(n) | |
– | – | – |
f(n)=2f(n/2)+O(n logn) | O(n log^2 n) | |
– | – | – |
f(n)=f(n-1)+f(n-2)+O(1) | O(2^n) | 遞歸的斐波那契 |
– | – | – |
f(n)=2f(n-1)+O(1) | O(2^n) | 漢諾塔 |
– | – | – |
f(n)=f(n-1)+O(n) | O(n^2) | 選擇排序,插入排序 |