【发布时间】:2014-07-04 14:39:25
【问题描述】:
我对归并排序算法的数学证明有疑问。我只看到证明是数学的,但问题与算法有关。
最坏情况下归并排序的时间复杂度,T(n) = 2T(n/2) + n-1
=> T(n) = n-1 + 2T(n/2) // 递归部分总是放在最后以保持简单
即插即插法:
T(n) = n-1 + 2[n/2-1 + 2T(n/4) ] //plug
= n-1 + n-2 + 4T(n/4) //chug
= n-1 + n-2 + 4[n/4 -1 + 2T(n/8)] //plug
= n-1 + n-2 + n-3 + ....... + n- 2^i-1 + 2^i T(n/2^i) //rounding off
现在我对这一步有疑问,他为什么将 i 作为 log(n-1)?这给了我们一个答案:
=nlogn -n+1
【问题讨论】:
-
你认为
i应该是什么? -
@PatriciaShanahan 我认为应该只是 n :(