什么是T(n)=n⋅log(n)+ T(n-1)的时间复杂度?

时间:2014-07-03 23:11:30

标签: complexity-theory

假设T(n) = n⋅log(n) + T(n-1),那么T(n)的时间复杂度是什么?

3 个答案:

答案 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)表示为总和,然后立即执行解决方案。