赫夫曼编码
程序员飞鱼子
花有重开日,人无再少年。
展开
-
34、哈夫曼树压缩文本和解压文本
思路:利用输入流和输出流进行文本的读出和写入,注意:压缩文件时会用到对象流(ObjectOutputStream写入文件),解压文件时,也会用到对象流(ObjectInputStream,读出文件)代码://压缩文件 public void zipFile(String srcFile, String dstFile) { InputStream is = null; OutputStream os = null; ObjectOutputStream oos = null;原创 2020-05-15 11:47:42 · 487 阅读 · 0 评论 -
32、哈夫曼编码之数据压缩
前言:前面讲了如何如何生成哈夫曼树,如何用哈夫曼树进行编码,进而得到哈夫曼哈希表,本节主要讲实例,如何对字符串进行压缩展示。思路:1、将字符串用生成哈夫曼树,生成哈夫曼哈希表 2、将原byte[]通过哈夫曼哈希表,生成新的byte[],进而压缩了数据代码://数据压缩:将字符串压缩 public byte[] zip(byte[] bytes, Map<Byte, StringBuilder> hfmMap) { StringBuilder stringBuilder =原创 2020-05-14 14:28:39 · 663 阅读 · 0 评论 -
31、赫夫曼编码
1、赫夫曼编码概念是一种编码方式,属于一种程序算法。 广泛用于数据文件的压缩,其压缩率在20%~90%左右。一般的编码流程:字符穿 => ASCLL编码编码发展过程:定长编码(不进行处理)=>变长编码(减少长度,但是有多异性) => Hefuman编码2、赫夫曼编码思路1、先总结每个字符使用频率,并存入节点2、将频率作为权值,将每个字符作为叶子节点,构建赫夫曼树3、将赫夫曼树每个节点(非叶子节点)的左边分支标为0,右边分支标为1。那么,从根节点到叶子节点的分支上原创 2020-05-13 18:22:46 · 413 阅读 · 0 评论