假定有一个递归算法,其时间复杂度T(n)的递归定义为: T(n) ={8T(n/2) + O(nlogn),n> 1;1,n=1 求T(n)
时间: 2023-09-25 21:10:59 浏览: 163
根据递归定义可以得到:
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)。
阅读全文