基于TreeMap的二维长度不确定数据的主次关键字自排序算法制造技术

技术编号:12277361 阅读:88 留言:0更新日期:2015-11-05 03:21
本发明专利技术公开一种基于TreeMap的二维长度不确定数据的主次关键字自排序算法,包括:从分隔符集合中选取能区分主关键字和次关键字的分隔符;通过二维长度不确定数据的<主关键字,次关键字>对(主次关键字的数据类型可为整型或字符串类型)及其对应数据分别构建TreeMap的Key和Value;利用分隔符、Key和Value向TreeMap缓冲区中插入二维长度不确定数据。本发明专利技术可应用于MapReduce技术中的Reduce阶段数据关联、数据在线采集/收集、按主关键字分析数据(如汇总和平均值)等,通过将二维长度不确定数据插入到TreeMap缓冲区,达到按主次关键字要求排序的目的。

【技术实现步骤摘要】

本专利技术涉及一种数据处理方法,尤其涉及一种基于TreeMap的二维长度不确定数 据的主次关键字自排序算法。
技术介绍
在本专利中,二维长度不确定数据,指维度确定但长度不确定的数据,其维度为二 维:采用主关键字和次关键字表示,主次关键字的数据类型可为整型或者字符串;通过〈主 关键字,次关键字〉对访问二维长度不确定数据。二维长度不确定数据的排序需求为:先按 主关键字排序,当主关键字相同时则按次关键字排序。 排序是将一组无序数据(记录)调整为有序(升序或者降序)数据的操作。现 有排序方法包括传统排序算法、办公自动化中的电子表格排序、大数据环境下的MapReduce 排序。 传统排序算法(插入排序、冒泡排序、选择排序、快速排序、堆排序等)是在给定 数据长度下排序。应用传统排序算法的前提条件为:(1)数据长度给定;(2)存储待排序的 数据;(3)数据的索引(下标)数据类型为整型;(4)对数据本身排序。二维长度不确定数 据的按主次关键字排序,因数据长度不确定性、索引类型不确定(可为字符串类型或者整 型)、按主次关键字排序(不是数据本身排序),因此传统排序算法并不适用于二维长度不 确定数据的主次关键字排序。 办公自动化中的电子表格排序是对选定排序区域排序,可以按主次关键字排序, 但选定了待排序数据的区域相当于给定了排序数据的长度,电子表格排序方法也不适用于 二维长度不确定数据的主次关键字排序。 利用大数据环境下的MapReduce技术排序:将主关键字作为Key,次关键字为 Value;对Value集合按次关键字排序。在Map阶段运行条件是必须确定的数据源(直接/ 间接的文件),二维长度不确定数据不能生成确定的数据源,MapReduce排序不适用于二维 长度不确定数据的主次关键字排序。
技术实现思路
本专利技术旨在提供一种基于TreeMap的二维长度不确定数据的主次关键字自排序 算法,可以支持复杂数据类型的二维长度不确定数据按主关键字和次关键字排序,算法效 率高,减少传统排序算法的排序操作。 为实现上述目的,本专利技术采用的技术方案如下: 本专利技术公开的,包 括以下步骤: 步骤1、按分隔符使用频率升序组织分隔符集合:将二维长度不确定数据中的所 有分隔符放在一起,形成分隔符集合; 步骤2、确定问题域为二维长度不确定数据的主、次关键字排序和主、次关键字的 排序要求; 步骤3、确定问题域中的主、次关键字集合,在主、次关键字集合中分别找出最大值 及最大值的数据宽度; 步骤4、从分隔符集合中选取能正确解析出二维长度不确定数据的主关键字和次 关键字的分隔符Separator; 步骤5、确定二维长度不确定数据的数据结构,当二维长度不确定数据是简单数据 类型,则不需定义二维长度不确定数据的数据结构;当二维长度不确定数据是复杂数据类 型否则,根据实际数据类型定义该二维长度不确定数据的数据结构stru2d; 步骤6、申请TreeMap缓冲区TreeMapBuffer,采用TreeMapBuffer默认的升序比 较器或采用自定义的降序比较器; 步骤7、将主关键字转换成字符串PrimaryKey,次关键字转换成字符串 SecondaryKey; 步骤8、构建二维长度不确定数据的TreeMap的键值对〈Key,Value〉,将字符串Pri maryKey+Separator+SecondaryKey合并生成Key,当所述二维长度不确定数据为复杂数据 类型时,申请str2d空间,申请的空间赋值给Value,填充str2d的数据成员,当所述二维长 度不确定数据为简单数据类型时,将二维长度不确定数据赋值给Value; 步骤9、调用TreeMapBuffer的put操作,二维长度不确定数据的键值对〈Key, Value〉缓存在TreeMapBuffer中。 优选的,所述分隔符为空格、制表符、分号或不可见字符。 进一步的优选,所述分隔符在调试时采用可见字符,在发布时采用不可见字符。 优选的,所述简单数据类型为整型、字符型或字符串型。 优选的,在步骤2中,整型主关键字和整型次关键字的排序要求包括按主关键字 的升序/降序排序和/或按次关键字的升序/降序排序。 优选的,在步骤7中,当所述主、次关键字的数据类型为整型时,则将主、次关键字 转换为字符串类型将主、次关键字转换结果分别赋值给PrimaryKey、SecondaryKey,所述转 换规则如下:当主、次关键字采用升序排列时,则将主、关键字转换为与主、关键字位数相同 的字符串;当主、关键字采用降序排列时,用主、次关键字的最大值减去该关键字的值,然后 将差值转换成字符串。 优选的,在步骤7中,当主、次关键字的数据类型为字符串类型,将主、次关键字分 别赋值给PrimaryKey、SecondaryKey。 进一步的,在步骤9之后,当排序未完成时,重复步骤7~9,直到排序完成。 本专利技术公开的具 有以下特征: 第一,算法效率高:算法的步骤1~6是排序的准备阶段(分析问题域和选取分 隔符),步骤7~9是插入操作。准备阶段的花销时间代价可以忽略,插入操作简单,由 TreeMap保证排序。算法的时间复杂度为0(1),其中,1为二维长度不确定数据的长度。第二,通过定义复杂数据类型的数据结构,支持复杂数据类型的二维长度不确定 数据的按主次关键字排序。 第三,通过自定义比较器、主次关键字转换,支持整型主关键字(次关键字)的升 序或者降序排序。 第四,很容易支持Reduce阶段数据关联、数据在线采集/收集、按主关键字分析数 据(汇总、平均值等)扩展应用: (1)对于Reduce阶段数据关联,假设有两组二维长度不确定的数据间需建立关 联,用<A,B>和<A,C>表示两组二维长度不确定的数据,A表示相同的主关键字,B和C表 示不同的次关键字。因为已经对A进行了相同排序(如升序),对齐主关键字,然后分析处 理这两组数据。 (2)对于数据在线采集/收集,因为本专利技术针对二维长度不确定的数据按主次关 键字排序,所以适合于长度不确定数据的采集/收集,方便有序存储。 (3)对于按主关键字分析数据,本专利技术先按主关键字排序,当主关键字相同时按次 关键字排序,即按主关键字分类。将需分类的依据设定为主关键字,统计量为次关键字;遍 历TreeMapBuffer后,很容易对次关键字进行汇总、平均等分析操作。 本专利技术有益效果如下: (1)通过向TreeMap缓冲区中插入二维长度不确定数据,自动实现按主关键字和 次关键字排序。 (2)通过按主次关键字自排序,减少传统排序算法的排序操作。 (3)对整型主关键字(次关键字),可实现按主关键字(次关键字)的升序或者降 序排序。 (4)向TreeMap缓冲区中插入二维长度不确定数据,算法简单,执行高效。 (5)可以支持复杂数据类型的二维长度不确定数据按主关键字和次关键字排序。【附图说明】 图1为本专利技术的流程图。【具体实施方式】 为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对本专利技术进 行进一步详细说明。 如图1所示,本专利技术公开的基于TreeMap的二维长度不确定数据的主次关键字自 排序算法,包括以下步骤: 步骤1、按分隔符使用频率升序组织分隔符集合 本专利技术将二本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/CN105022799.html" title="基于TreeMap的二维长度不确定数据的主次关键字自排序算法原文来自X技术">基于TreeMap的二维长度不确定数据的主次关键字自排序算法</a>

【技术保护点】
基于TreeMap的二维长度不确定数据的主次关键字自排序算法,其特征在于,包括以下步骤:步骤1、按分隔符使用频率升序组织分隔符集合:将二维长度不确定数据中的所有分隔符放在一起,形成分隔符集合;步骤2、确定问题域为二维长度不确定数据的主、次关键字排序和主、次关键字的排序要求;步骤3、确定问题域中的主、次关键字集合,在主、次关键字集合中分别找出最大值及最大值的数据宽度;步骤4、从分隔符集合中选取能正确解析出二维长度不确定数据的主关键字和次关键字的分隔符Separator;步骤5、确定二维长度不确定数据的数据结构,当二维长度不确定数据是简单数据类型,则不需定义二维长度不确定数据的数据结构;当二维长度不确定数据是复杂数据类型否则,根据实际数据类型定义该二维长度不确定数据的数据结构stru2d;步骤6、申请TreeMap缓冲区TreeMapBuffer,采用TreeMapBuffer默认的升序比较器或采用自定义的降序比较器;步骤7、将主关键字转换成字符串PrimaryKey,次关键字转换成字符串SecondaryKey;步骤8、构建二维长度不确定数据的TreeMap的键值对<Key,Value>,将字符串PrimaryKey+Separator+SecondaryKey合并生成Key,当所述二维长度不确定数据为复杂数据类型时,申请str2d空间,申请的空间赋值给Value,填充str2d的数据成员,当所述二维长度不确定数据为简单数据类型时,将二维长度不确定数据赋值给Value;步骤9、调用TreeMapBuffer的put操作,二维长度不确定数据的键值对<Key,Value>缓存在TreeMapBuffer中。...

【技术特征摘要】

【专利技术属性】
技术研发人员:胡自权徐勇龙汉安尹德辉夏纪毅
申请(专利权)人:四川医科大学
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1