資源簡介
香農(Shannon)編碼是一種常見的可變字長編碼,與哈夫曼編碼相似,當信源符號出現的概率正好為2的負冪次方時,采用香農-范諾編碼同樣能夠達到100%的編碼效率。
代碼片段和文件信息
#include
#include
#include
#include
using?namespace?std;
void?sort(double?p[]int?q)????//排序部分?
{
double?temp;
int?i;?
for(i=0;i {
for(int?j=i+1;j {
if(p[i] {
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
}
}
void?accumulate(double?p[]int?qdouble?Fi[])???//計算累加概率
{
double?sum=0.0;
int?i;
for(i=0;i {
Fi[i]=sum;
sum=sum+p[i];
}
}
void?length(double?p[]int?qint?l[])??????????//計算碼字的長度
{
int?ij;
for(i=0;i {
for(j=0;j<100;j++)?????????????????????????//取整?
{
if(j<-log(p[i])/log(2)+1?&&?j>=-log(p[i])/log(2)?)
l[i]=j;
}
}
}
void?code(int?qint?l[]double?Fi[]string?*str)???//計算二元碼
{???int?i;
for(i=0
- 上一篇:huffman算法源碼
- 下一篇:基于C語言實現國密SM3算法
評論
共有 條評論