哈弗曼压缩为无损压缩。
霍夫曼压缩的原理:有abbcccddddeeeee这样一个名字为1.txt的文件。
1.统计文件中每个字节出现每个次数
97 1
98 2
99 3
100 4
101 5
HashMap<Byte, Integer> map = tree.countBytes("F:\\abc\\1.txt");
Set<Byte> keys = map.keySet();
for (byte b : keys) {
int value = map.get(b);
System.out.println(b + "次数:" + value);
2.以字节的次数作为节点的权值构造哈弗曼树
3.得到每个字节的哈弗曼编码
97 010
98 011
99 00
100 10
101 11
public String getHuffCode()
{
return huffCode;
}
4.使用哈弗曼编码来表示文件中的每个字节,得到一个01 字符串
010 011 011 00 00 00 10 10 10 10 11 11 11 11 11
4.得到01串
String str = tree.byte2HfmCode(mapCode, "F:\\abc\\1.txt");
System.out.println(str);
5.将01字符串看做是二进制的数据,每8位一个字节
01001101 10000001 01010101 11111111 1
比较两个叶子节点大小用到的
自定义比较器
class MyComparable implements Comparator<TreeNode> {
public int compare(TreeNode o1, TreeNode o2) {
return o1.obj - o2.obj;
}
}
分享到:
相关推荐
Huffman编码是一种高效的数据压缩算法,它基于字符出现频率构建最优前缀树,进而为每个字符分配唯一的二进制编码。在Java环境下实现Huffman编码,我们需要理解以下几个关键概念: 1. **字符频率统计**:首先,我们...
### Quake3自适应Huffman编码分析 #### 一、Huffman编码原理及Quake3应用背景 Huffman编码是一种广泛应用于数据压缩领域的算法,它能够有效地减少存储或传输的数据量,尤其适用于文本数据的压缩。Huffman编码的...
在数据压缩技术中,Huffman编码是一种广泛使用的无损数据压缩算法,它基于字符频率进行编码,使得频繁出现的字符拥有较短的编码,从而提高压缩效率。本项目将深入探讨如何使用C语言实现Huffman树和Huffman编码。 ...
### 图像的Huffman编码详解 #### 一、Huffman编码原理 Huffman编码是一种用于数据压缩的熵编码算法,由David A. Huffman在1952年提出。该算法的核心是通过构建一棵Huffman树(又称为最优二叉树),来为数据中的每...
### Huffman编码和解码的C语言实现 #### 引言 随着信息技术的快速发展,数据量呈爆炸式增长,这对存储设备的容量、通信线路的带宽以及计算机的处理能力提出了更高要求。在这种背景下,数据压缩技术变得尤为重要。...
Huffman编码是一种基于频率的无损数据压缩方法,由David A. Huffman于1952年提出。在信息论和计算机科学中,它被广泛应用于文本、图像、音频和其他类型的数据压缩。这个压缩包文件“Huffman编码测试文件”包含了各种...
### Huffman编码C++源代码解析 #### 一、Huffman编码简介 Huffman编码是一种广泛应用于数据压缩领域的编码方法,其基本思想是根据符号出现的频率来决定编码的长度,出现频率高的符号会分配较短的编码,而出现频率...
Huffman编码是一种基于频率的无损数据压缩方法,最初由D.E. Huffman在1952年提出。本项目实现了在Matlab环境下对图像进行Huffman编码的过程,包括图像的灰度化、编码、解码以及计算压缩比和执行时间。 首先,我们要...
Huffman树,也被称为哈夫曼树或霍夫曼树,是一种特殊的二叉树,用于在数据压缩领域实现高效的编码方法——Huffman编码。这种编码技术是基于频率的,能够为出现频率高的字符分配较短的编码,而为出现频率低的字符分配...
Huffman编码是一种高效的数据压缩算法,由David A. Huffman在1952年提出,主要用于无损数据压缩。它的核心思想是构建一棵特殊的二叉树——Huffman树,通过这棵树来为每个字符生成唯一的二进制编码。下面将详细阐述...
Huffman编码C++实现 Huffman编码是一种变长前缀编码算法,广泛应用于数据压缩、图像处理、文本处理等领域。下面是对Huffman编码C++实现的详细解释。 Huffman树 Huffman树是一种特殊的二叉树,它的叶子结点代表...
实验三、Huffman编码(二叉树) 实验目的:熟练掌握二叉树应用(Huffman编码)的基本算法实现。 实现功能:对输入的一串电文字符实现Huffman编码,再对Huffman编码生成的代码串进行译码,输出电文字符串。实现...
Huffman编码是一种基于二叉树的数据压缩方法,由David A. Huffman在1952年提出,主要用于无损数据压缩。它的核心思想是利用字符出现频率的差异来创建一棵特殊的二叉树——Huffman树,使得频繁出现的字符拥有较短的...
Huffman编码是一种高效的数据压缩算法,由David A. Huffman在1952年提出,主要用于文本数据的压缩。它的核心思想是构建一棵特殊的二叉树——哈夫曼树,通过这棵树来为每个字符生成一个唯一的前缀编码,使得频繁出现...
Huffman编码是一种基于贪心策略的数据压缩算法,由David A. Huffman在1952年提出。它通过构建一棵特殊的二叉树——哈夫曼树(Huffman Tree),来为输入符号(通常是一些字符)分配不同的二进制编码,使得出现频率高...
JPEG文件格式中使用了多种技术来实现压缩,其中Huffman编码就是关键技术之一。Huffman编码是一种广泛使用的熵编码方法,属于无损压缩技术,它可以将数据转换为变长编码,使得频繁出现的字符使用较短的编码,不常见的...
### 用Huffman编码对文件进行压缩的C语言实现 #### 一、引言 随着计算机技术的发展,数据量的增长速度越来越快,如何有效地管理和处理这些数据成为了亟待解决的问题。其中,数据压缩技术因其能够有效减少数据占用...
3. **生成Huffman编码**:调用`HuffmanCode()`函数生成每个字符的Huffman编码。 4. **显示编码结果**:使用`HShowCode()`函数展示每个字符及其对应的编码。 5. **文件编码**:通过`CharCodeFile()`函数对文件进行...