压缩算法-哈夫曼编码

压缩算法-哈夫曼编码

压缩算法顾名思义就是将大的文件压缩成小的文件
本文介绍一下常见的压缩算法—哈夫曼编码

哈夫曼编码
介绍之前得先了解两个基本的概念
哈夫曼树:哈夫曼树是一颗带权二叉树,且各节点得权值和最小

在这里插入图片描述
比如一串字符串以及他们得编码如下
编码:a:111 b:000 c:101 d:010
字符串:abacddd
编码后:111000111101010010010
长27

哈夫曼在编码的时候使用01
统计各个字符出现的次数,出现最多的就将它的位置放在最上面,这样编码下来就可以最大的节约空间,同时只有叶子节点才放字符,字符出现次数相同的放同一级,至于为什么是这样的结构请自行百度
在这里插入图片描述
根节点的0不需要
编码:d:0 a:10 b:110 c:111
编码后为:1011010111000
长度:13
可以看出节省的非常多使用这种编码就可以极大的节省存储空间

有的人就想问了这种不固定长度的编码会不会导致编码的干扰,这个编码的部分被判定到其他的部分中去了?

很明显不会

注意看这颗树,这个编码的前缀都是唯一确定的发现了吗,是没有重复的,前缀没有重复的就不会有干扰,一定会匹配到唯一的前缀

代码实现后补

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟程序员李老板专业码代码三十年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值