赫夫曼树 - 数据结构和算法51
赫夫曼树
让编程改变世界
Change the world by program
赫夫曼树
在数据膨胀、信息爆炸的今天,数据压缩的意义不言而喻。谈到数据压缩,就不能不提赫夫曼(Huffman)编码,赫夫曼编码是首个实用的压缩编码方案,即使在今天的许多知名压缩算法里,依然可以见到赫夫曼编码的影子。 另外,在数据通信中,用二进制给每个字符进行编码时不得不面对的一个问题是如何使电文总长最短且不产生二义性。根据字符出现频率,利用赫夫曼编码可以构造出一种不等长的二进制,使编码后的电文长度最短,且保证不产生二义性。 介绍赫夫曼编码前,我们必须得介绍赫夫曼树。 什么叫做赫夫曼树呢?我们先来看一个例子。 以下程序在效率上有什么问题呢? [codesyntax lang="c"]if( a < 60 ) printf(“不及格”); else if( a < 70 ) printf(“及格”); else if( a < 90 ) printf(“良好”); else printf(“优秀”);[/codesyntax] 如果我们把判断流程改为以下,效果可能有明显的改善: