注:仅分析递归式
一、代入法
1、猜
2、证
3、解
举例:T(n) = 4T(n/2) + n, T(1) = Θ(1)
第一次猜: ·O(n^3)
则有:T(k) ≤ ck^3 for k < n.
数学归纳法证明:T(n) ≤ cn^3

第二次猜O(n^2)

T(n)=4T(n/2)+n
≤4 c(n/2)2 +n=cn2+n
≤cn2
继续猜O(n^2lgn)
再证明……
所以这种方法主要是在递归式不适用于其他三种方法时才用,比较繁琐。
附:时间复杂度顺序:O(1) < O(logn) < O(n) < O(nlg(n)) < O(n^2) < O(n^2log(n)) < O(n^3) < O(2^n) <O(n!) < O(n^n)
二、递归树
画出递归树

本文详细总结了分析递归式时间复杂度的三种方法:代入法、递归树和主定理/公式法,并通过实例进行深入讲解。对于无法直接应用其他方法的情况,代入法较为繁琐;递归树法适用于一分为多的完全树形式;主定理/公式法则适用于特定类型的递归。文章还补充讨论了斐波那契数列的时间复杂度计算。

4万+

被折叠的 条评论
为什么被折叠?



