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号