在n节点的二进制堆创建的情况下,考虑到在任何高度h都将存在atmax
,其时间复杂度变为O(n)而不是nlog(n)。
节点将需要最多O(h)时间来堆积。
在类似的路线上,我想证明BST的创造。为此,我使用这样的事实:在任何深度d处可以存在最多2 ^ d个节点,这将占用插入的最大O(d)时间。所以方程式
为什么这个等式导致nlog(n) - BST创建的预期时间复杂度或O(n ^ 2)-worst案例复杂性。请建议如何从上面的等式进一步进行。
答案 0 :(得分:1)
最后我解开了那个系列。
设T = log(N),即2 ^ T = N(没有节点)............(1)
问题变为Summation_of(2 ^ d * d),其中d的范围是从0到T.所以
G(T) = 0*2^0 + 1*2^1 + 2*2^2 + ..... + T*2^T.
2G(T) = 0*2^1 + 1*2^2 + ..... +(T-1)*2^T + T*2^(T+1)
2G(T)-G(T) = 0 - 2^1 -2^2 - ..... - 2^T + 2T*2^T
G(T) = - 2^(T+1)-2 + 2T*2^T G(T) = 2( (T-1)2^T +1 ) which is = 2( (log(N)-1)N +1 )...........from (1)
因此将上限设为N log(N)(考虑平衡树)