如何评估递归算法的复杂度
整理如下表
掌握时间复杂度细则可以更好的优化代码性能
递归关系 | 结果 | 举例 |
---|---|---|
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) | 选择排序,插入排序 |