算法导论6-3
读书笔记
本小节讲述了将数组转化为最大堆的过程,伪代码如下:
BUILD-MAX-HEAP(A)
A.heap-size = A.length
for i = A.length/2 downto 1
MAX-HEAPIFY(A, i)
课后习题
6.3-1
参照6-3的方法,说明\(BUILD-MAX-HEAP\)在数组\(A=<5,3, 17,10,84,19,6,22,9>\)上的操作过程。
根据上述伪代码足以操作,不再画图。
6.3-2
对于\(BUILD-MAX-HEAP\)中第2行的循环控制变量\(i\)来说,为什么我们要求它从\(\lfloor A.length /2 \rfloor\)到1递减,而不是从1到\(\lfloor A.length/2 \rfloor\)递增呢?
如果是自顶向下的话,可能会破坏之前调整好的最大堆。
6.3-3
证明: 对于任一包含\(n\)个元素的堆中,至多有\(\lceil n/2^{h+1} \rceil\)个高度为\(h\)的节点?
//todo