所以我一直在研究排序算法。
我一直在寻找合并排序的复杂性。
有人可以向我解释h = 1 + lg(n)
答案 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。