哈夫曼树编码




对输入的英文大写字母进行统计概率 然后构建哈夫曼树,输出是按照概率降序排序输出Huffman编码
输入
  大写字母个数 n 第一个字母 第二个字母 第三个字母 ... 第n个字母

输出
 字母1 出现次数 Huffman编码 
 字母2 出现次数 Huffman编码 
 字母3 出现次数 Huffman编码 
 … 
 字母n 出现次数 Huffman编码

Sample In
10
I I U U U I U N U U

Sample Out
U 6 1
I 3 01
N 1 00

解决此题首先要明白HuffmanTree的构造原理

首先来看一个简单的例子:
把某个班同学百分制的成绩转换成5分制,规则如下,

90~100     5
80~90       4
70~80       3
60~70       2
<60           1

看起来很容易实现
即 if (score<60)
     grade=1;
     else if(score<70)
     grade=2;
     else if(score<80)
     grade=3;
     else if(score<90)
     grade=4;
     else
     grade=5;
但是如果这个班的同学大多数都取得了90分以上的好成绩,那么前面4步的判断是很没必要且费时的。
很明显,这种算法在面对大量数据的时候是比较不合理的。
那么如何优化算法呢?
假定我们目前已经知道了这个班成绩的分布律

成绩

<60

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值