Shannoncoding (一)信源符号的排序
2016-02-23 21:43
190 查看
#include<stdio.h> int main() int i=0,j=0,m=0,n=0; int b[150][150]={{0}}; //该二维数组用来存储信源符号及其出现的次数 char input; /*输入信源符号并累加其次数*/ while((input=getchar())!='\n') { for(i=65;i<=122;i++) if(input==i) b[i][i]++; } /*两个for循环实现冒泡排序*/ for(i=65;i<=122;i++) for(j=65;j<=122;j++) { /*以下两个for循环均为筛选出每行的唯一一个非零元素*/ for(m=65;m<=122;m++) if(b[j][m]>0) break; for(n=65;n<=122;n++) if(b[j+1] >0) break; /*以下为冒泡排序*/ if(b[j][m]<b[j+1] ) { b[j+1][m]=b[j][m]; b[j][m]=0; b[j] =b[j+1] ; b[j+1] =0; } } /*按照出现次数由大至小输出信源符号*/ for(i=65;i<=122;i++) for(j=65;j<=122;j++) if(b[i][j]>0) printf("%c:%d",j,b[i][j]); return 0; }
以上代码实现对输入的一串信源符号按照出现次数的排序,重点在于排序后如何使次数仍与原符号对应,通过引入二维数组b[i][j],j存储字符,数组值存储次数,得以解决。
相关文章推荐
- 207. Course Schedule
- neuq oj 1058: 谭浩强C语言(第三版)习题7.3 矩阵 C++
- 异步线程与主线程的消息传递
- J-link V8固件升级及克隆版破解向导(系统WIN10)
- Integer
- NSURLConnection下载
- Character
- vim简单配置(cp:http://www.linuxidc.com/Linux/2014-02/96396.htm)
- Java开发中的23种设计模式详解
- 你所不知的 CSS ::before 和 ::after 伪元素用法
- PCA数学原理
- SVG绘制圆形简单示例分享
- BZOJ 3503: [Cqoi2014]和谐矩阵( 高斯消元 )
- 贪心算法之完美字符串
- 黑马程序员——面向对象
- php可变参数
- linux 启动 oracle数据库
- U盘安装OSX
- 用python统计日志中IP的数量
- 最好的8个Java RESTful框架