假设T(n) = n⋅log(n) + T(n-1)
,那么T(n)
的时间复杂度是什么?
答案 0 :(得分:3)
T(n) = n log n + (n-1) log (n-1) + ... + 1 log 1 + T(0)
< n log n + (n-1) log n + ... 1 log n + T(0)
= ( n + n-1 + n-2 + ... + 1) log n + T(0)
= n(n+1)/2 ⋅ log n + T(0)
所以它在O(n² log n)
,如果T(0)
也在O(n² log n)
。
其他方式:
T(n) = n log n + (n-1) log (n-1) + ... + 1 log 1 + T(0)
< n log n + n log (n-1) + ... + n log 1 + T(0)
= n (log n + log (n-1) + ... + log 1) + T(0)
= n log (n!) + T(0)
< n log (nⁿ) + T(0)
= n ⋅ n ⋅ log n + T(0)
= n² log n
修改强>
您也可以通过相同的方式查看下限:
T(n) = n log n + (n-1) log (n-1) + ... + 1 log 1 + T(0)
> n log n/2 + (n-1) log n/2 + ... + n/2 log n/2 + (n/2-1) log 1 + ... 1 log 1 + T(0)
= ( n(n+1)/2-n/4(n/2+1) ) log n/2 + T(0)
= (3/8 n² + 1/4 n) log n/2 + T(0)
= (3/8 n² + 1/4 n) log n - (3/8 n² + 1/4 n) log 2
= 3/8 n² log n + 1/4 n log n - (3/8 n² + 1/4 n) log 2
所以T(n)
位于Ω(n² log n)
。
一起得到Θ(n² log n)
(只要T(0)
中有O(n² log n)
)
答案 1 :(得分:2)
这扩展到
T(n) = T(0) + 1⋅log(1) + 2⋅log(2) + ... + (n-1)⋅log (n-1) + n⋅log(n)
哪个
≈ ∫n⋅log(n) dn = (n²/2)⋅log(n)−n²/4 = O(n²⋅logn)
(使用积分逼近)
答案 2 :(得分:-1)
将T(n)表示为总和,然后立即执行解决方案。