小弟今天算到一題,怎麼樣也無法得出答案 請各位幫忙
T(n) = 2T(n/2) + n*logn 用展開代入法求O(?)
我的算法:
T(n) = 2T(n/2)+ nlogn
代入 T(n/2) = 2T(n/4) + (n/2)log(n/2)
= 2 * [2T(n/4) + (n/2)log(n/2)] + n*log(n)
= 4T(n/4) + n*log(n/2) + n*log(n)
= 4T(n/4) + n*log(n)- 1+ n*log(n)
代入 T(n/4) = 2T(n/4) + (n/4)log(n/4)
= 8T(n/8) + n*log(n) - 2 + n*log(n) - 1 + nlog(n)
= 2^n * T(n/2) + n[logn - 1 + logn -2 +...+ logn -n +log n]
先問為何不能寫成 2^n ?
這是我第一個求出來的式子
第二次再算我將 2^n 當成 n(任意數時)
= n * T(n/n) + n [log(n) - 0 + log(n) - 1 + log(n) - 2 +...+log(n) - n ]
= n*log(n) * (n + 1) - n(n + 1) / 2
= n * (log(n)- 1) * (n + 1) /2
可是答案好像是 n * c + n[(1+log(n)) * log(n) / 2]
這之間我哪裡算錯了??