论赫夫曼树效率简单篇
PS:以下数据分析是以小学生成绩为基础
假设有以下小学生成绩: 44, 88, 69, 70, 75, 94, 80, 85, 99 ……
分数 | 0~59(A) | 60~69(B) | 70~79(C) | 80~89(D) | 90~100(E) |
所占比例(权值) | 5% | 15% | 40% | 30% | 10% |
我们对成绩进行分类
第一种:构成逻辑树:
![](https://images2015.cnblogs.com/blog/476234/201607/476234-20160712141457764-297809457.png)
对应代码:
![](https://images2015.cnblogs.com/blog/476234/201607/476234-20160712141532420-426167927.png)
对于小学生成绩一般大致分布在中等、良好和优秀,以此为基础理论我们可以对上面的树进行优化分类:
第二种:
![](https://images2015.cnblogs.com/blog/476234/201607/476234-20160712141606607-153066206.png)
对应代码:
![](https://images2015.cnblogs.com/blog/476234/201607/476234-20160712141627842-1043407261.png)
第一种分类运行效率:0.0022571秒
第二种分类运行效率:0.0005124秒
运用赫夫曼树进行分析:根据数组比例我们排序得到A5、B15、C40、D30、E10
依次根据权值进行排列得到最优树:
![](https://images2015.cnblogs.com/blog/476234/201607/476234-20160712141646295-15220336.png)
对应代码:
![](https://images2015.cnblogs.com/blog/476234/201607/476234-20160712141702561-1567867931.png)
分类运行效率:0.0023347秒
最优树因为需要进行2次判断(item>=70&&item<80)所以性能还不如以上2种
请多多指教!