-
大小: 2KB文件類型: .cpp金幣: 1下載: 0 次發(fā)布日期: 2021-01-07
- 語言: C/C++
- 標(biāo)簽: 香農(nóng)編碼??
資源簡(jiǎn)介
香農(nóng)(Shannon)編碼是一種常見的可變字長(zhǎng)編碼,與哈夫曼編碼相似,當(dāng)信源符號(hào)出現(xiàn)的概率正好為2的負(fù)冪次方時(shí),采用香農(nóng)-范諾編碼同樣能夠達(dá)到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[])???//計(jì)算累加概率
{
double?sum=0.0;
int?i;
for(i=0;i {
Fi[i]=sum;
sum=sum+p[i];
}
}
void?length(double?p[]int?qint?l[])??????????//計(jì)算碼字的長(zhǎng)度
{
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)???//計(jì)算二元碼
{???int?i;
for(i=0
評(píng)論
共有 條評(píng)論