算法导论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

posted @ 2021-01-15 10:35  ijkzen  阅读(104)  评论(0编辑  收藏  举报