假定有一个递归算法,其时间复杂度T(n)的递归定义为: T(n) ={8T(n/2) + O(nlogn),n> 1;1,n=1 求T(n)
时间: 2023-09-25 18:10:59 浏览: 160
算法时间复杂度分析中递归方程求解方法综述
5星 · 资源好评率100%
根据递归定义可以得到:
T(n) = 8T(n/2) + nlogn
= 8(8T(n/4) + (n/2)log(n/2)) + nlogn
= 8^2T(n/4) + 2nlogn - 8nlog2 + nlogn
= 8^2T(n/4) + 3nlogn - 8nlog2
= 8^3T(n/8) + 4nlogn - 8nlog3
= ...
= 8^kT(n/2^k) + knlogn - (2^k) * nlog2
当n/2^k = 1时,即 k = logn 时,得到
T(n) = 8^logn + nlogn * logn - nlogn
= n^3(log2)^3 - n^2(log2)^2
所以,时间复杂度为 O(n^3log^3n)。
阅读全文