数据结构第4章_刘震.ppt

数据结构第4章_刘震

在构造哈夫曼树时,可以设置一个结构数组HuffNode保存哈夫曼树中各结点的信息,根据二叉树的性质可知,具有n个叶子结点的哈夫曼树共有2n-1个结点,所以数组HuffNode的大小设置为2n-1,数组元素的结构形式如下: 3.5 树的应用 3.5.2 堆排序 堆的定义 堆是满足下列性质的数列{r1, r2, …,rn}: 或 {12, 36, 27, 65, 40, 34, 98, 81, 73, 55, 49} 例如: 是小顶堆 {12, 36, 27, 65, 40, 14, 98, 81, 73, 55, 49} 不是堆 (小顶堆) (大顶堆) 思考:倒置小顶堆是否一定是大顶堆? 3.5.2 堆排序 堆排序 思想 ⑴ 以初始关键字序列,建立堆; ⑵ 输出堆顶最小元素; ⑶ 调整余下的元素,使其成为一个新堆; ⑷ 重复⑵,⑶ 次,直到n个元素输出,得到 一个有序序列. 关键要解决⑴和⑶,即如何由一个无序序列建成一个堆? 如何调整余下的元素成为一个新堆? 3.5.2 堆排序 堆排序 调整 ⑴ 将堆顶元素和堆的最后一个元素位置交换; ⑵ 然后以当前堆顶元素和其左、右子树的根结点进行比较(此时,左、右子树均为堆),并与值较小的结点进行交换; ⑶ 重复⑵,继续调整被交换过的子树,直到叶结点或没进行交换为止。 称这个调整过程为筛选。 3.5.2 堆排序 堆排序 调整

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档