[发明专利]一种归并排序方法及装置在审
申请号: | 202110256265.8 | 申请日: | 2021-03-09 |
公开(公告)号: | CN112947889A | 公开(公告)日: | 2021-06-11 |
发明(设计)人: | 鄢贵海;卢文岩;孔浩 | 申请(专利权)人: | 中科驭数(北京)科技有限公司 |
主分类号: | G06F7/36 | 分类号: | G06F7/36 |
代理公司: | 北京开阳星知识产权代理有限公司 11710 | 代理人: | 唐博 |
地址: | 100094 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 归并 排序 方法 装置 | ||
本发明实施例提供了一种归并排序方法及装置,涉及数据处理技术领域。该方法包括:通过第一CAS和第二CAS分别从数据队列的首端和尾端开始并行对两个数据队列中的数据进行归并排序;第一CAS用于将满足单调性要求的数据出队,第二CAS用于将不满足单调性要求的数据出队;在一个数据队列的数据全部出队时,获取剩余数据、第一数据队列以及第二数据队列;根据剩余数据、第一数据队列以及第二数据队列,生成两个数据队列的归并排序结果。本发明实施例用于提高并归排序并行度,从而降低归并排序的时延。
技术领域
本发明涉及数据处理技术领域,尤其涉及一种归并排序方法及装置。
背景技术
随着科学技术的飞速发展,大数据储量规模持续保持40%左右的增长率,数据的爆炸式增长对数据处理带来了巨大的挑战。
归并排序作为数据处理中最为基础且应用最为广泛的操作之一,在数据处理中具有非常重要的作用。归并排序算法的基本原理为:通过比较交换单元(Compare and Swap,CAS)对两个有序序列中的数据进行比较,并输出较小或较大的数据,以获取该两组有序序列的归并排序结果。现有技术中的并归排序方式普遍为基于先入先出(First In FirstOut,FIFO)序列实现的并归排序方式。即,将有序序列中的数据按照排序反序写入FIFO序列中,CAS每次从两个有序序列对应的FIFO序列中各选取一个数据进行比较,并将符合单调性要求的数据,另一个数据留队。由于FIFO序列只能在队尾写入数据,在队首读取数据的特性,一对FIFO序列中的数据只能由一个CAS进行并归排序,当FIFO序列中的数据量(有序序列的数据量)较多时,归并排序的时延较大。
发明内容
有鉴于此,本发明提供了一种归并排序方法及装置,用于提高并归排序并行度,从而降低归并排序的时延。
为了实现上述目的,本发明实施例提供技术方案如下:
第一方面,本发明的实施例提供一种归并排序方法,包括:
通过第一比较交换单元CAS和第二CAS分别从数据队列的首端和尾端开始并行对两个数据队列中的数据进行归并排序;所述第一CAS用于将满足单调性要求的数据出队,所述第二CAS用于将不满足单调性要求的数据出队;
在所述两个数据队列中的一个数据队列的数据全部出队时,获取剩余数据、第一数据队列以及第二数据队列,所述剩余数据为所述两个数据队列中的另一个数据队列中剩余的数据,所述第一数据队列为所述第一CAS依次出队的数据形成的数据队列,所述第二数据队列为所述第二CAS依次出队的数据形成的数据队列;
根据所述剩余数据、所述第一数据队列以及所述第二数据队列,生成所述两个数据队列的归并排序结果。
作为本发明实施例一种可选的实施方式,所述根据所述剩余数据、所述第一数据队列以及所述第二数据队列,生成所述两个数据队列的归并排序结果,包括:
将所述剩余数据依次写入所述第一数据队列的尾端,生成第三数据队列;
对所述第二数据队列中的数据进行逆向排序,生成第四数据队列;
将所述第四数据队列拼接于所述第三数据队列的尾端,生成所述两个数据队列的归并排序结果。
作为本发明实施例一种可选的实施方式,所述根据所述剩余数据、所述第一数据队列以及所述第二数据队列,生成所述两个数据队列的归并排序结果,包括:
将所述剩余数据逆序依次写入所述第二数据队列的尾端,生成第三数据队列;
对所述第三数据队列中的数据进行逆向排序,生成第四数据队列;
将所述第四数据队列拼接于所述第一数据队列的尾端,生成所述两个数据队列的归并排序结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中科驭数(北京)科技有限公司,未经中科驭数(北京)科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110256265.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种交流继电器铁芯制造工艺
- 下一篇:塑料漏粪地板出料系统