哈夫曼编码
2016-05-09 19:12
405 查看
前言
哈夫曼编码是广泛应用于数据压缩的十分有效的编码方式。今天就来简单叙述一下哈夫曼编码。
代码
由于书上代码比较简练,就直接抄书了。类的定义
#include"iostream" #include"cstdlib" #include"cstdio" using namespace std; template <class Type> class Huffman { friend BinaryTree <int> HuffmanTree(Type[], int); public: operator Tyoe()const { return weight; } private: BinaryTree <int> tree; Type weight; };
算法描述
template<class Type> BinaryTree <int>HuffmanTree(Type f[], int n) { Huffman<Type>*w = new Huffman <Type>[N+1]; BinaryTree <int > z, zero; for (int i = 1;i <= n;i++) { z.MakeTree(i, zero, zero); w[i].weight = f[i]; w[i].tree = z; } MinHeap<Huffman<Type>>Q(1); Q.Initalize(w,n,n); Huffman<Type>x, y; for (int i = 1;i < n;i++) { Q.DeleteMin(x); Q.DeleteMin(y); z.MakeTree(0,x.tree,y.tree); x.weight += y.weight; x.tree = z; Q.Insert(x); } Q.DeleteMin(x); Q.Deactivate(); delete[]w; return x.tree; }
小结
虽然书上是这么写,但是vs上编译没过哈(这里指语法错误),不过就这样看吧(我想编者仅仅是给一个参考,并不是让你照抄)。相关文章推荐
- 1.一些 贪心算法 的简单思维题:
- 贪心算法——字典序最小问题
- 贪心算法——区间调度问题
- 移动Web开发,数据压缩,后端压缩传输的json格式数据
- Jump Game I,II 贪心
- Wildcard Matching
- 贪心法实现无向图的划分 代码
- 贪心题目循环和控制台折行
- HDOJ 1009
- 【解题报告】【USACO】酸奶工厂
- 【解题报告】【】交谊舞
- POJ 1328
- Best Cow Line
- HDU 1009 Fatmouse's Trade
- POJ2377 Bad Cowtractors
- 贪心 hdu 1003
- 最大容器
- 满足和为定值的两个数或多个数
- Codeforces Round #300
- HUD1052 __ P2 1002 __ Tian Ji -- The Horse Racing