C++实现Huffman的编解码
Huffman编码主要是通过统计各元素出现的频率,进而生成编码最终达到压缩的目的。这里是Huffman树中节点的结构。首先用一个名为freq的hashtable来记录各个元素的频率:Huffman树的构建过程如下代码所示:其中print_Code和del函数如下:至此就完成了Huffman的编码。当然,由于huffman的编码都是0或1,因此需要进行位的表示才能完成压缩。注意,位需要以8个为一组进行写入:至此就完成了Huffman的编码以及压缩,效果十分可观:下面进行Huffman解码的解说:Huffman解码首先是根据编码表进行huffman树的重建:然后读取bin文件的一系列位:然后用Huffman树根据左0右1进行查找并输出:至此就完成了Huffman树的解码:总的来说,Huffman对于大数据的压缩效果是很好的,运行时间也很快,大概需要20s就可以完成对1000000个数据的编码压缩。
用户评论