一种整数序列快速压缩存储算法

文档序号:8924962阅读:763来源:国知局
一种整数序列快速压缩存储算法
【技术领域】
[0001] 本发明设及一种整数序列快速压缩存储算法,属于数据处理技术领域。
【背景技术】
[0002] 工程结构有限元计算分析时,使用整数编号来标识结点与单元。在有限元计算分 析交互软件设计时,如果需要对结点与单元进行某类操作,往往会将操作的结点或者单元 的编号选择出来,而由于大型结构的网格数量较多(一般±木工程结构采用实体单元进行 分析时网格结点数量一般会在几万或几十万),选择出来的该些编号如果使用数组单一存 储的话数量较多,占用内存较大,而且将该些数据呈现给用户的时候,同质数据多行显示可 读性较差,给用户检查数据带来困难。由于上述整数序列存在等差数列的特点,可W通过将 连续数字保存成等差数列的方式进行压缩存储可W解决上述问题。但是由于整数编号序列 数量较大时,常规算法耗时较大,软件实现时存在明显停滞,用户体验较差。

【发明内容】

[0003] 本发明的目的在于克服现有技术中的不足,提供一种整数序列快速压缩存储算 法,解决现有技术中数据压缩存储耗时长的技术问题。
[0004] 为达到解决上述技术问题,本发明所采用的技术方案是:一种整数序列快速压缩 存储算法,包括如下步骤:
[0005] 步骤一:将整数序列Tk中的整数元素Mi按从小到大的顺序进行排列,排序后的整 数序列为Sk;
[0006] 其中;k表示整数序列包含整数的数量,i= {1,2, 3......k};
[0007] 步骤二;从排序后的整数序列Sk中的未被压缩的第一个整数元素My开始,查找所 有与组成等差数列的整数元素,分别组成公差不等的等差数列,其中;xGi;
[000引步骤将包含整数元素最多的等差数列使用非数字字符格式进行存储,具体 为:
[0009] Mm化&Mmax蝴a;
[0010] 其中;
[0011] Mmi。表示等差数列中最小的整数元素;
[0012] 表示等差数列中最大的整数元素;
[0013] D。表示等差数列的公差;
[0014] 符号为任意非数字字符,为连接关键字;为差值关键字;
[0015] 步骤四:循环步骤二~步骤=,直至整数序列中所有的整数元素全部被压缩存储。
[0016] 如果整数序列中某个整数无法与其它整数组成等差数列或只有2个整数可W组 成等差数列,则该整数压缩后保持不变。
[0017] 步骤四种判定所有整数元素全部被压缩的方法是:
[001引将整数序列为Sk中的整数元素M店义压缩标识F[i],当F山=0代表Mi未被压 缩,F[i] = 1代表Mi已被压缩;当集合F= {F[1],F[2],F巧],……,F比]}中已经没有非 0元素时,表示Sk中所有整数元素已被压缩。
[0019] 与现有技术相比,本发明所达到的有益效果是;采用本发明专利的方法对整数序 列进行压缩,速度非常快,像几万甚至几十万的有限元编号数据可W控制在毫秒级完成压 缩,而且压缩后存储量较小,比较适合应用于有限元交互软件设计中向用户实时呈现数据, 由于压缩存储过程能够在用户几乎感受不到的时间内完成,使得软件与用户的交互更加友 好。
【附图说明】
[0020] 图1是本发明的流程图。
【具体实施方式】
[0021] 下面结合附图对本发明作进一步描述。W下实施例仅用于更加清楚地说明本发明 的技术方案,而不能W此来限制本发明的保护范围。
[0022] 对于整数序列Tk= {M。M2,Ms,...Mi, ...MJ应当具有如下特点:
[0023] 1、整数序列全部由整数组成;
[0024] 2、整数序列包含的任意两个整数不相等,即当i声j,Mi声Mj。
[0025] 其中,k表示整数序列包含整数的数量。
[0026] 如图1所示,是本发明的流程图,一种整数序列快速压缩存储算法的具体步骤如 下:
[0027] 步骤一:将整数序列Tk中的整数元素Mi按从小到大的顺序进行排列,排序后的整 数序列为Sk;
[002引其中;k表示整数序列包含整数的数量,i= {1,2, 3……k};
[0029] 步骤二;从排序后的整数序列Sk中的未被压缩的第一个整数元素MJf始,查找所 有与My组成等差数列的整数元素,分别组成公差不等的等差数列,其中;xGi;
[0030] 步骤将包含整数元素最多的等差数列使用非数字字符格式进行存储,具体 为:
[003UMmh&Mm。,蝴。;
[0032] 其中;
[0033] Mmi。表示等差数列中最小的整数元素;
[0034] 表示等差数列中最大的整数元素;
[0035] D。表示等差数列的公差;
[0036] 符号为任意非数字字符;
[0037] 当等差数列的公差为1时,Mmh&M。。,蝴。可改与为Mmh&Mm。,。
[0038] 例如;W"to"表示为连接关键字,"by"表示差值关键字;整数序列Ss= (1、3、引 可W表示成"Ito化y2";整数序列S4= {1、2、3、4}可W表示成"lto4"。
[0039] 如果整数序列中某个整数无法与其它整数组成等差数列或只有2个整数可W组 成等差数列,则该整数压缩后保持不变。
[0040] 步骤四:循环步骤二~步骤=,直至整数序列中所有的整数元素全部被压缩存储。 判定所有整数元素全部被压缩的方法是:
[0041] 将整数序列为Sk中的整数元素Mi定义压缩标识F[i],在压缩前,将所有压缩标识 置零,F[i] =0代表Mi未被压缩,F[i] = 1代表Mi已被压缩。当集合F=伊[1],F巧], F巧],……,F比]}中已经没有非0元素时,表示Sk中所有整数元素已被压缩。
[0042] 下面W具体实例说明本发明方法的实施过程:
[004引(1)假定整数序列为Tk= [10 9 5 1 3 13 45 30 21 17 1引;
[0044] 似对Tk进行排序,Sk= [1 3 5 9 10 13 15 17 21 30 4引;
[0045] 0)初始化压缩标识F,F= [0 000000000 0];
[0046] (4)W第1个元素1为基点,求后序元素Mh与1之间的差值序列,Mh需满足 Mh《(Mk-Mi)/2与F比]=0,即小于等于(45 -1)/2 = 22;那么根据Sk的元素值可W判断, 只需要求从第2个元素3至第9个元素21之间的数据:
[0047] 0。=巧 4 8 9 12 14 16 20]
[0048] 妨判断Sk中W1基点,WD。为等差值,可能组成"ToBy"的压缩形式的数量,例 如,W1为基点,2为等差值,Sk中只有3、5可与1组成"Ito化y2",只有2个元素可与1组 成W2为等差值的压缩存储,即E1 = 2 ;再W1为基点,D。中的第2个元素4为等差值,Sk 中有5、9、13、17、21可与1组成"lto2化y4",那E2 = 5 ;W此类推,可W得到E=巧5 2 1 1211];
[0049] (6)显然,E2值最在,即W1为基点,WD。的第2个元素4为等差值进行压缩后压 缩量最大。那么,1压缩后为"lto2化74",1、5、9、13、17、21各元素已经被压缩,设置对应的 标识为1,新的F值:
[0化0]F= [101 10101 10 0];
[0化1] (7)Sk第一个未压缩数字变成3,W3为基点,可W得到:
[0052] 0。= [7 12 27 42]
[0化引 E= [1 1 1 1]
[0化4]E的最大值为为1,3压缩后仍然为3,新的F值;
[0化引 F= [1 1 1 10101 10 0]
[0化6] 巧)Sk第一个未压缩数字变成10,W10为基点,可W得到:
[0化7] 0。= [5 20 3引
[005引 E= [1 1 1]
[0化9]E的最大值为为1,10压缩后仍然为10,新的F值;
[0060]F= [1 1 1 1 1 101 10 0]
[0061] 巧)Sk第一个未压缩数字变成15,W15为基点,可W得到:
[0062] 0。= [15 30]
[0063]E=巧 1]
[0064] E的最大值为为2,15压缩后仍然为15to45byl5,新的F值;
[00 化]F= [1 1 1 1 1 1 1 1 1 1 1]
[0066] F中已经没有非0元素,Sk所有元素已经被压缩。
[0067] (10)整数序列Sk被压缩后变成[lto2化y4 3 10 15to45byl5]。
[0068] 如表1所示,是采用非压缩存储方式和采用本发明提供的压缩存储方式的对比表 格,从表1中可W看出;非压缩存储方式在存储10个结点的集中荷载时,必须记录每个结点 的编号,共需要记录10个整数,压缩存储后只需要记录"1192"s个整数即可,而且对于大 数据量的有限元编号操作,采用压缩后的方式进行管理,存储量的优势会更加明显。本发明 方法提出的整数序列快速压缩存储算法,大幅度提高了压缩速度,减少了存储空间的占用。
[0069] 表1;数据压缩存储的优势对比
[0070]
[0072] W上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明技术原理的前提下,还可W做出若干改进和变形,该些改进和变形 也应视为本发明的保护范围。
【主权项】
1. 一种整数序列快速压缩存储算法,其特征在于,包括如下步骤: 步骤一:将整数序列Tk中的整数元素Mi按从小到大的顺序进行排列,排序后的整数序 列为Sk; 其中:k表示整数序列包含整数的数量,i= {1,2, 3......k}; 步骤二:从排序后的整数序列Sk中的未被压缩的第一个整数元素Mx开始,查找所有与Mx组成等差数列的整数元素,分别组成公差不等的等差数列,其中:xei; 步骤三:将包含整数元素最多的等差数列使用非数字字符格式进行存储,具体为: 其中: Mmin表示等差数列中最小的整数元素; Mmax表示等差数列中最大的整数元素; Dq表示等差数列的公差; 符号为任意非数字字符,"&"为连接关键字;为差值关键字; 步骤四:循环步骤二~步骤三,直至整数序列中所有的整数元素全部被压缩存储。2. 根据权利要求1所述的整数序列快速压缩存储算法,其特征在于,如果整数序列中 某个整数无法与其它整数组成等差数列或只有2个整数可以组成等差数列,则该整数压缩 后保持不变。3. 根据权利要求1所述的整数序列快速压缩存储算法,其特征在于,步骤四种判定所 有整数元素全部被压缩的方法是: 将整数序列为Sk中的整数元素Mi定义压缩标识F[i],当F[i] =O代表Mi未被压缩,F[i] = 1代表Mi已被压缩;当集合F= {F[l],F[2],F[3],……,F[k]}中已经没有非O 元素时,表示Sk中所有整数元素已被压缩。
【专利摘要】本发明公开了一种整数序列快速压缩存储算法,包括:将整数序列Tk中的整数元素按从小到大的顺序进行排列;从未被压缩的第一个整数元素开始,查找所有与其组成等差数列的整数元素,分别组成公差不等的等差数列;将包含整数元素最多的等差数列使用非数字字符格式进行压缩存储,具体为:Mmin&Mmax*Dq;其中:Mmin表示等差数列中最小的整数元素;Mmax表示等差数列中最大的整数元素;Dq表示等差数列的公差;“&”、“*”为任意非数字字符,“&”为连接关键字;“*”为差值关键字。本发明方法对整数序列进行压缩,速度快,且压缩后存储量较小,比较适合应用于有限元交互软件设计中向用户实时呈现数据。
【IPC分类】H03M7/30
【公开号】CN104901703
【申请号】CN201510162747
【发明人】马志国
【申请人】河海大学
【公开日】2015年9月9日
【申请日】2015年4月8日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1