对于T(n) = a*T(n/b)+c*n^k;T(1) = c 的递归关系,
有如下结论:
if (a > b^k) T(n) = O(n^(logb(a)));
if (a = b^k) T(n) = O(n^k*logn);
if (a < b^k) T(n) = O(n^k);
对于:T(n) = 25T(n/5)+n^2
a=25 b = 5 k=2
有:a==b^k 故T(n)=O(n^k*logn)=O(n^2*logn)
对于:T(n)=4T(n/2)+cn
a=4 b=2 k=1
有:a>b^k 故:T(n)=O(n^(logb(a)))=O(n^2)
对于:T(n)=T(n/2)+cn^3
a=1 b=2 c=3
有:a<b^k 故:T(n)=O(n^k)=O(n^3)
另一个比较官方的定理:
递归方程时间复杂度计算公式
时间: 2024-10-13 08:41:09