合并排序 - 递归树

时间:2014-06-22 03:44:49

标签: sorting computer-science mergesort

所以我一直在研究排序算法。

我一直在寻找合并排序的复杂性。

有人可以向我解释h = 1 + lg(n)

enter image description here

1 个答案:

答案 0 :(得分:5)

如果你继续将 n 除以2,你最终会得到1.
也就是说,根据对数的定义,它将log 2 (n)除以2来实现这一点。

每次除以2,我们都会为递归树添加一个新的级别 将其添加到根级别(不需要任何分区),并且我们总共记录 2 (n)+ 1个级别。


这是一个更酷的证据。请注意,重新排列,我们有T(2n) - 2 T(n)= 2 c n。

如果n = 2 k ,那么我们得到T(2 k + 1 ) - 2 T(2 k )= 2 c 2 ķ

让我们简化一塌糊涂。设定U(k)= T(2 k )/(2 c)。

然后我们有U(k + 1) - 2 U(k)= 2 k ,或者,如果我们定义U'(k)= U(k + 1) - U (K):

U'(k) - U(k)= 2 k

k在这里是离散的,但我们可以让它是连续的,如果我们这样做,那么U'是U的衍生物。

此时解决方案显而易见:如果您曾经采用衍生物,那么您就知道如果函数及其导数的差异是指数的,那么函数本身必须是指数的(因为只有在案例将衍生物本身的一些倍数)。

此时你知道U(k)是指数的,所以你只需插入指数中未知系数的指数,然后重新插入以解决T。