【笔记】
从最后一个非叶子结点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的结点。
不会> <