基于统计的压缩算法:游程编码

简介: 1.游程编码概念   游程编码又称“运行长度编码”或“行程编码”,是一种统计编码,该编码属于无损压缩编码。 2.基本原理   用一个符号值和串长代替具有相同值的连续符号,使符号长度少于原始数据的长度。

1.游程编码概念

  游程编码又称“运行长度编码”或“行程编码”,是一种统计编码,该编码属于无损压缩编码。

2.基本原理

  用一个符号值和串长代替具有相同值的连续符号,使符号长度少于原始数据的长度。

  如:     原始文本:dfffffeeeeettttrrrrttttt

    游程编码后文本:d1f5e5t4r4t5

 3.代码示例

 1 #include <stdio.h>
 2 #include <string.h>
 3 int main()
 4 {
 5     char textBefore[100] ="dfffffeeeeettttrrrrttttt";
 6     char textAfter[100];
 7     memset(textAfter,0,sizeof(textAfter));
 8 
 9     char c;
10     int num,i,j;
11     for(i=0;i<strlen(textBefore);){
12         c   = textBefore[i];    ///临时保存字符
13         num = 1;    ///保存个数
14         for(j=i+1;j<strlen(textBefore);j++){
15             if(c == textBefore[j])
16                 num++;
17             else
18                 break;
19         }
20         i = j;
21 
22         sprintf(textAfter,"%s%c",textAfter,c);
23         sprintf(textAfter,"%s%d",textAfter,num);
24     }
25     printf("textBefore : %s\n",textBefore);
26     printf("textAfter  : %s\n",textAfter);
27     return  0;
28 }

代码输出:

  

 

参考:

http://zh.wikipedia.org/wiki/%E6%B8%B8%E7%A8%8B%E7%BC%96%E7%A0%81

http://baike.baidu.com/view/721796.htm?fr=aladdin

(方法简单也是有名字的)

相关文章
|
12天前
|
存储 JSON 算法
TDengine 检测数据最佳压缩算法工具,助你一键找出最优压缩方案
在使用 TDengine 存储时序数据时,压缩数据以节省磁盘空间是至关重要的。TDengine 支持用户根据自身数据特性灵活指定压缩算法,从而实现更高效的存储。然而,如何选择最合适的压缩算法,才能最大限度地降低存储开销?为了解决这一问题,我们特别推出了一个实用工具,帮助用户快速判断并选择最适合其数据特征的压缩算法。
24 0
|
3月前
|
算法 5G vr&ar
基于1bitDAC的MU-MIMO的非线性预编码算法matlab性能仿真
在现代无线通信中,1-bit DAC的非线性预编码技术应用于MU-MIMO系统,旨在降低成本与能耗。本文采用MATLAB 2022a版本,深入探讨此技术,并通过算法运行效果图展示性能。核心代码支持中文注释与操作指导。理论部分包括信号量化、符号最大化准则,并对比ZF、WF、MRT及ADMM等算法,揭示了在1-bit量化条件下如何优化预编码以提升系统性能。
|
3月前
|
算法
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
|
4月前
|
机器学习/深度学习 存储 算法
编码之舞:从算法到应用的探索之旅
在数字化时代的浪潮中,编程技术如同一种语言,连接着人类与机器。本文将带领读者踏上一场自数据结构基础至高级算法应用的探索旅程,通过实际案例分析,揭示算法在现代软件开发中的重要作用,并分享作者在编程实践中的心得体会,旨在为初学者和资深开发者提供有价值的参考与启示。
|
4月前
|
机器学习/深度学习 算法 计算机视觉
通过MATLAB分别对比二进制编码遗传优化算法和实数编码遗传优化算法
摘要: 使用MATLAB2022a对比了二进制编码与实数编码的遗传优化算法,关注最优适应度、平均适应度及运算效率。二进制编码适用于离散问题,解表示为二进制串;实数编码适用于连续问题,直接搜索连续空间。两种编码在初始化、适应度评估、选择、交叉和变异步骤类似,但实数编码可能需更复杂策略避免局部最优。选择编码方式取决于问题特性。
|
3月前
|
存储 算法 Java
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
42 0
|
4月前
|
算法 Java
Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
56 1
|
5月前
|
缓存 算法
基于机会网络编码(COPE)的卫星网络路由算法matlab仿真
**摘要:** 该程序实现了一个基于机会网络编码(COPE)的卫星网络路由算法,旨在提升无线网络的传输效率和吞吐量。在MATLAB2022a中测试,结果显示了不同数据流个数下的网络吞吐量。算法通过Dijkstra函数寻找路径,计算编码机会(Nab和Nx),并根据编码机会减少传输次数。当有编码机会时,中间节点执行编码和解码操作,优化传输路径。结果以图表形式展示,显示数据流与吞吐量的关系,并保存为`R0.mat`。COPE算法预测和利用编码机会,适应卫星网络的动态特性,提高数据传输的可靠性和效率。
|
4月前
|
算法 Java 程序员
Java面试题:解释Java的垃圾回收机制,包括常见的垃圾回收算法。介绍一下Java的垃圾回收算法中的标记-压缩算法。
Java面试题:解释Java的垃圾回收机制,包括常见的垃圾回收算法。介绍一下Java的垃圾回收算法中的标记-压缩算法。
46 0