《算法导论》笔记 第6章 6.3建堆

【笔记】

从最后一个非叶子结点n/2开始,自底向上调用MAX_HEAPIFY建堆。

证明:BUILD_MAX_HEAP 运行时间的界为O(n)

一个n元素堆的高度为floor(logn),在任意高度h上,至多有ceil(n/2^(h+1))个结点。



【练习】

6.3-1 示出 BUILD_MAX_HEAP 作用于数组 A=<5,3,17,10,84,19,6,22,9> 的过程。





6.3-2 在 BUILD_MAX_HEAP 的第2行代码中,为什么希望循环下标i从 length[A]/2 降到1,而不是从1升到length[A]/2?

MAX_HEAPIFY 仅适用于子树均为大根堆的情况,从1升到length[A]/2时,子树不为大根堆,不满足调用MAX_HEAPIFY的条件。


6.3-3 证明:在任一含n个元素的堆中,至多有ceil(n/2^(h+1))个高度为h的结点。

不会> <


原文地址:https://www.cnblogs.com/cyendra/p/3681631.html