参加了编程大赛,实现对文件的压缩,本人选择了java实现。 通过大量的知识资源搜索,总结自己了解的五种压缩算法:LZSS(字典算法)、LZW(串表压缩算法)、Hfm(霍夫曼压算法)、LZ77(滑动窗口算法)、LZAM(数据压缩算法)。 有兴趣的同学自己百度一下各种算法实现原理。
自己本地项目把5种算法都跑了起来(idea工具,jkd1.8,解压直接可用),对.png图片文件和2个txt大文件进行压缩和解压,得到的压缩率如下(LZAM压缩算法最优,是7Z压缩使用的算法):
算法压缩率 | png图片 | txt文件1 | txt文件2 |
LZSS(字典算法) | 0.8803 | 0.5046 | 0.5468 |
LZW(串表压缩算法) | 0.8677 | 0.48 | 0.653 |
Hfm(霍夫曼压算法) | 0.7309 | 0.5672 | 0.7233 |
LZ77(滑动窗口算法) | 4.091 | 2.5476 | 2.9278 |
LZAM(数据压缩算法) | 0.573045 | 0.285189 | 0.319269 |
5种算法java源码,解压直接可以在main方法里调试 五种压缩算法JAVA源码