2021/9/28 堆排序 + Huffman Tree

2021/9/28 堆排序 + Huffman Tree

一、堆排序

是一棵顺序存储完全二叉树

堆只有大根堆与小根堆 分别代表最大值与最小值

堆排序:

https://www.cnblogs.com/jingmoxukong/p/4303826.html

一切尽在不言中....

二、Huffman tree

当用 n 个结点(都做叶子结点且都有各自的权值)试图构建一棵树时,如果构建的这棵树的带权路径长度最小,称这棵树为“最优二叉树”,有时也叫“赫夫曼树”或者“哈夫曼树”。

给你一个数列{8, 11, 23, 29, 14, 7, 3, 5},要求转为一颗霍夫曼树

参考来源:

参考来源:https://blog.csdn.net/wuxudong12138/article/details/100032443

三、Huffman coding

3.1 定长编码:

3.2 变长编码

上图最后一行可能会产生二义性,1是很多编码的前缀。

3.3、霍夫曼编码

霍夫曼编码是前缀编码,不会有相同的前缀(叶子节点没有子节点实现的)

左0 右1

特殊情况

**当数组为「4,4,4,4,6,7,12,29」,会导致单个字符霍夫曼编码不一致,但最后结果是一致的,原因在于排序的不稳定性。但是 wpl都是最小的 **

编码实践留在了2021/9/29号

原文地址:https://www.cnblogs.com/hujesse4/p/15352329.html