优化的查找算法如二分查找、二叉树查找等,虽然查找效率提高了。但是各自对检索的数据都有要求:二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树上,但是数据本身的组织结构不可能完全满足各种数据结构。
数据库查询是数据库的主要功能之一,最基本的查询算法是顺序查找时间复杂度为O(n),显然在数据量很大时效率很低。优化的查找算法如二分查找、二叉树查找等,虽然查找效率提高了。
哈夫曼编码(Huffman Coding)是一种编码方式,以哈夫曼树—即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。在计算机信息处理中,“哈夫曼编码”是一种一致性编码法(又称"熵编码法"),用于数据的无损耗压缩。这一术语是指使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。这种方法是由David.A.Huffman发展起来的。例如,在英文中,e的出现概率很高,而z的出现概率则最低。当利用哈夫曼编码对一篇英文进行压缩时,e极有可能用一个位(bit)来表示,而z则可能花去 25个位(不是26)。用普通的表示方法时,每个英文字母均占用一个字节(byte),即8个位。二者相比,e使用了一般编码的1/8的长度,z则使用了 3倍多。倘若我们能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。1、权是什么?
就是它出现的概率,先挑小的出来。
2、w={10,12,16,21,30}的数字是为什么要放在这里?不能放到顶层码?
这就是他们的权吧。
3、怎样计算?
4、举个类似的例子
就是从短到长排列,然后把最小的两个连起来
重复,知道变成一棵树
比如说1,2,3,4,5这五个数,本身的频度也就是这样,排列好以后
先是1,2合成3,新的排列:3,3,4,5
然后3,3合并成6,新的:4,5,6
然后4,5,新的:6,9
然后在合并
得到的树就是:
顶
6 9
3 3 4 5
1 2
编码的话,就是左边的树杈为0,右边为1
比如说2就是001,大概就是这个意思
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)