资源简介
香农(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算法
评论
共有 条评论