数据排序方法和装置制造方法及图纸

技术编号:9668050 阅读:103 留言:0更新日期:2014-02-14 06:37
本发明专利技术公开了一种数据排序方法和装置,属于计算机领域。所述方法包括:将待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段;再进行压缩,得到压缩数据段;将每次压缩后得到的压缩数据段写入所述存储介质;当所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段;对所述合并数据段进行解压,获取排序数据;将所述排序数据写入所述存储介质。本发明专利技术通过在对读入内存的数据进行排序后,对得到的有序数据段进行压缩,将压缩后的有序数据段进行归并,归并过程中无需解压,降低了磁盘IO,节省了CPU的资源,提高了数据排序的性能。

【技术实现步骤摘要】
数据排序方法和装置
本专利技术涉及计算机领域,特别涉及一种数据排序方法和装置。
技术介绍
排序是计算机内经常进行的一种操作,其目的是将一组“无序”的数据调整为“有序”的数据。现有技术通常通过外部排序来对数据进行处理,即将待排序的数据分批读入内存,在内存中采用内存排序方法分别对读入的待排序数据进行排序,得到初始合并段,将得到的初始合并段写入磁盘;当所有的初始合并段均写入磁盘后,每次从磁盘中读取多个初始合并段,将该多个初始合并段进行归并,得到中间合并段,将得到的中间合并段再次写入磁盘中,直到磁盘中所有的初始合并段被归并为中间合并段后,再每次从磁盘中读取多个中间合并段进行归并,经过多次归并后,得到一个有序数据。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题:在对数据的进行排序的过程中,需要进行多次归并,且待排序的数据量越大,磁盘10越大,排序耗时长,磁盘负担重。
技术实现思路
为了解决现有技术的问题,本专利技术实施例提供了一种数据排序方法和装置。所述技术方案如下:第一方面,提供了一种数据排序方法,所述方法包括:将存储介质中的待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段;对所述有序数据段进行压缩,得到压缩数据段;将每次压缩后得到的压缩数据段写入所述存储介质;当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段;对所述合并数据段进行解压,获取排序数据;将所述排序数据写入所述存储介质。结合第一方面,在第一方面的第一种可能实现方式中,将存储介质中的待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段包括:将所述存储介质中的待排序数据分批读入所述内存;每读入一段数据,使用预设内存排序算法,对所述读入的数据进行排序,得到所述有序数据段。结合第一方面,在第一方面的第二种可能实现方式中,对所述有序数据段进行压缩,得到压缩数据段包括:获取所述有序数据段中的数据以及每个数据在所述有序数据段中的出现次数;根据所述有序数据段中的数据以及每个数据的出现次数,获取所述压缩数据段。结合第一方面,在第一方面的第三种可能实现方式中,当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段包括:当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,每读入预设数目的压缩数据段,对所述预设数目的压缩数据段进行归并,得到中间数据段;将所述中间数据段写入所述存储介质;当所述待排序数据对应的所有中间数据段均写入所述存储介质时,将所述所有中间数据段分批读入所述内存,继续进行归并,直至得到所述合并数据段。结合第一方面的第三种可能实现方式,在第一方面的第四种可能实现方式中,每读入预设数目的压缩数据段,对所述预设数目的压缩数据段进行归并,得到中间数据段包括:获取所述预设数目的压缩数据段中的数据,以及每个数据在对应的压缩数据段中的出现次数;获取每个数据的总出现次数,所述总出现次数为所述每个数据在对应的压缩数据段中的出现次数之和;根据所述每个数据和所述每个数据的总出现次数,获取所述中间数据段。第二方面,提供了一种数据排序装置,所述装置包括:数据读入模块,用于将存储介质中的待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段;压缩模块,用于对所述有序数据段进行压缩,得到压缩数据段;数据段写入模块,用于将每次压缩后得到的压缩数据段写入所述存储介质;归并模块,用于当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段;解压模块,用于对所述合并数据段进行解压,获取排序数据;排序数据写入模块,用于将所述排序数据写入所述存储介质。结合第二方面,在第二方面的第一种可能实现方式中,所述数据读入模块包括:数据读入单元,用于将所述存储介质中的待排序数据分批读入所述内存;排序单元,用于每读入一段数据,使用预设内存排序算法,对所述读入的数据进行排序,得到所述有序数据段。结合第二方面,在第二方面的第二种可能实现方式中,所述压缩模块包括:出现次数获取单元,用于获取所述有序数据段中的数据以及每个数据在所述有序数据段中的出现次数;压缩数据段获取单元,用于根据所述有序数据段中的数据以及每个数据的出现次数,获取所述压缩数据段。结合第二方面,在第二方面的第三种可能实现方式中,所述归并模块包括:归并单元,用于当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,每读入预设数目的压缩数据段,对所述预设数目的压缩数据段进行归并,得到中间数据段;中间数据段写入单元,用于将所述中间数据段写入所述存储介质;合并数据段获取单元,用于当所述待排序数据对应的所有中间数据段均写入所述存储介质时,将所述所有中间数据段分批读入所述内存,继续进行归并,直至得到所述合并数据段。结合第二方面的第三种可能实现方式,在第二方面的第四种可能实现方式中,所述归并单元包括:出现次数获取子单元,用于获取所述预设数目的压缩数据段中的数据,以及每个数据在对应的压缩数据段中的出现次数;总次数获取子单元,用于获取每个数据的总出现次数,所述总出现次数为所述每个数据在对应的压缩数据段中的出现次数之和;中间数据段获取子单元,用于根据所述每个数据和所述每个数据的总出现次数,获取所述中间数据段。本专利技术实施例提供的技术方案带来的有益效果是:本专利技术实施例提供的方法和装置,通过在对读入内存的数据进行排序后,对得到的有序数据段进行压缩,将压缩后的有序数据段进行归并,归并过程中无需解压,降低了磁盘10,节省了 CPU的资源,提高了数据排序的性能。【附图说明】为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供的一种数据排序方法的流程图;图2a是本专利技术实施例提供的一种数据排序方法的流程图;图2b是本专利技术实施例提供的两路归并示意图;图3是本专利技术实施例提供的一种数据排序方法的流程图;图4是本专利技术实施例提供的一种数据排序装置结构示意图。【具体实施方式】下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。图1是本专利技术实施例提供的一种数据排序方法的流程图,参见图1,所述方法包括:101:将存储介质中的待排序数据分批读入内存,每读入一段数据,对该读入的数据进行排序,得到有序数据段;102:对该有序数据段进行压缩,得到压缩数据段;103:将每次压缩后得到的压缩数据段写入该存储介质;104:当该待排序数据所对应的所有压缩数据段均写入该存储介本文档来自技高网...

【技术保护点】
一种数据排序方法,其特征在于,所述方法包括:将存储介质中的待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段;对所述有序数据段进行压缩,得到压缩数据段;将每次压缩后得到的压缩数据段写入所述存储介质;当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段;对所述合并数据段进行解压,获取排序数据;将所述排序数据写入所述存储介质。

【技术特征摘要】
1.一种数据排序方法,其特征在于,所述方法包括: 将存储介质中的待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段; 对所述有序数据段进行压缩,得到压缩数据段; 将每次压缩后得到的压缩数据段写入所述存储介质; 当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段; 对所述合并数据段进行解压,获取排序数据; 将所述排序数据写入所述存储介质。2.根据权利要求1所述的方法,其特征在于,将存储介质中的待排序数据分批读入内存,每读入一段数据,对所述读入的数据进行排序,得到有序数据段包括: 将所述存储介质中的待排序数据分批读入所述内存; 每读入一段数据,使用预设内存排序算法,对所述读入的数据进行排序,得到所述有序数据段。3.根据权利要求1所述的方法,其特征在于,对所述有序数据段进行压缩,得到压缩数据段包括: 获取所述有序数据段中的数据以及每个数据在所述有序数据段中的出现次数;· 根据所述有序数据段中的数据以及每个数据的出现次数,获取所述压缩数据段。4.根据权利要求1所述的方法,其特征在于,当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,并进行归并,得到合并数据段包括: 当所述待排序数据所对应的所有压缩数据段均写入所述存储介质时,将所述存储介质中的压缩数据段分批读入所述内存,每读入预设数目的压缩数据段,对所述预设数目的压缩数据段进行归并,得到中间数据段; 将所述中间数据段写入所述存储介质; 当所述待排序数据对应的所有中间数据段均写入所述存储介质时,将所述所有中间数据段分批读入所述内存,继续进行归并,直至得到所述合并数据段。5.根据权利要求4所述的方法,其特征在于,每读入预设数目的压缩数据段,对所述预设数目的压缩数据段进行归并,得到中间数据段包括: 获取所述预设数目的压缩数据段中的数据,以及每个数据在对应的压缩数据段中的出现次数; 获取每个数据的总出现次数,所述总出现次数为所述每个数据在对应的压缩数据段中的出现次数之和; 根据所述每个数据和所述每个数据的总出现次数,获取所述中间数据段。6.一种数...

【专利技术属性】
技术研发人员:王传廷刘辉军
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1