哈弗曼压缩与解压的原理及对象化实现

这一次主要是跟大家探讨一下哈弗曼压缩的原理及实现,由于过程化的实现更加容易理解也更加直观 ,所以这里首先会分步骤跟大家讲解一下哈弗曼压缩的具体实现方法,然后再与大家分享一下对象化的实 现。

首先,我们要知道文件为什么能压缩?

文件是由字节所组成的,一个字节的长度为8位,所以最多只存在256种字节,而一个文件中一般存在 许多相同的字节,我们把相同的字节以一种更加精简的方式表示,就完成了我们所说的压缩。

哈弗曼压缩的原理是什么?

上次博客中提到了哈弗曼编码,但是只是粗略的带过了,这一次举一个具体的例子来更加直观的说明 哈弗曼压缩的原理。

假设一个文件中是这样的一串字节ABBCCCDDDD,那么这个文件的大小就是10个byte。那么接下来就是 我们的哈弗曼压缩的第一步:

一.读取文件,统计每一种字节出现的次数,将出现的字节种类与对应的次数保存起来(可采用数组 或者是HashMap,或者是其他的数据结构)

保存完了之后干什么呢??当然是构建哈弗曼树呀。第二步:

二. 利用得到的字节与对应的频次构建哈弗曼树,需要注意的是,构建树的时候是以字节出现的频次 作为我们的评判标准,出现次数越多的放在越上层。

比如我们上面所说的这个文件,它所构成的树应该是这样的:

passport.baidu.com/?business&default_tab=1&un=%C7%E5%D4%B7qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B8%DF%EA%96qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B4%F3%B3%C7qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%CE%C4%B0%B2qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B0%B2%D0%C2qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%D0%EC%CB%AEqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%C8%DD%B3%C7qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%D0%DB%BFhqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%D3%C0%C7%E5qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B9%CC%B0%B2qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%CE%B5%BFhqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%EA%96%D4%ADqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%E4%C3%C2%B9qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%91%D1%81%EDqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%D0%FB%BB%AFqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%91%D1%B0%B2qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%C8f%C8%ABqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%C9%D0%C1xqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B3%E7%B6Yqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%8F%88%B1%B1qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%BF%B5%B1%A3qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B9%C1%D4%B4qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B3%E0%B3%C7qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%C2%A1%BB%AFqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%9E%B4%C6%BDqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%C6%BD%C8%AAqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%C5d%C2%A1qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%DFw%CE%F7qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%D3%F1%CC%EFqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%D8S%9D%99qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B1R%FD%88qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%93%E1%8C%8Eqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%9E%B4%BFhqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B2%FD%C0%E8qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%9E%B4%C4%CFqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%98%B7%CD%A4qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%CC%C6%BA%A3qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%CF%E3%BA%D3qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%EA%96%C7%FAqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B6%A8%CF%E5qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%CE%E5%C5_qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B4%FA%BFhqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B7%B1%D6%C5qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%EC%60%C7%F0qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%8C%8E%CE%E4qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%C9%F1%B3%D8qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%C9%BD%EA%8Eqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%91%AA%BFhqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%9C%86%D4%B4qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%8FV%EC%60qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%91%D1%C8%CAqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%EA%96%B8%DFqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%CC%EC%E6%82qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%D7%F3%EB%85qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%D3%D2%D3%F1qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%C6%AB%EAPqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%BA%D3%C7%FAqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B1%A3%B5%C2qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%CE%E5%D5%AFqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%BF%C1%8D%B9qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%C5d%BFhqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%8D%B9%BFhqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%ECo%98%B7qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%8A%E4%9F%A9qq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%B7%BD%C9%BDqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%C5R%BFhqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%C7%E5%D0%ECqq%BC%E6%C2%9A%D0%A1%C3%C3
passport.baidu.com/?business&default_tab=1&un=%BD%BB%B3%C7qq%BC%E6%C2%9A%D0%A1%C3%C3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值