• 大小: 2KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-01-07
  • 语言: C/C++
  • 标签: 香农编码  

资源简介

香农(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

评论

共有 条评论