具有收敛序列的最大堆

问题描述 投票:0回答:1

我正在经历max-heapify,下面是观察结果

1-对于叶子上一级的节点,观察max-heapify取O(1),对于叶子上一级L的节点,一般观察到O(L)次]]

2-具有级别1的n / 4个节点,具有级别2的n / 8个节点,依此类推。

for循环中的总工作量:

n/4 (1 c) + n/8 (2 c) + n/16 (3c) + ... + 1(log n c)

设置n / 4 = 2 pow k

C * 2powk(1 / 2pow0 + 2 / 2pow1 + 3 / 2pow2 + ... +(k + 1)/ 2powk)

括号中的级数是一个收敛的级数,以一个常数为界

算法是:

建立最大堆(A)

for i=n/2 down to 1:
  do max-heapify (A,i)

我从演讲中了解了大部分内容,但在某些方面感到困惑

1-为什么我们使用n / 4(1 c),为什么不使用n / 2?以及我们如何知道n / 4将我们带到1级

2-此收敛级数如何使我们达到理论复杂性

我正在经历max-heapify,下面是观察值1-对于叶子上方一个级别的节点,观察max-heapify需O(1);对于L之上的级别,节点通常需要O(L)次。 。

algorithm time-complexity big-o heap heapsort
1个回答
0
投票

1:考虑一些(为简单起见,是完整的)二叉树。它有一个根,在根下面有两个节点,在它们下面有4个节点,依此类推。因此,高度为h的二叉树中的节点数为

© www.soinside.com 2019 - 2024. All rights reserved.