CN108762718A - 一种提高计算机运算速度的并发筛选排序方法 - Google Patents
一种提高计算机运算速度的并发筛选排序方法 Download PDFInfo
- Publication number
- CN108762718A CN108762718A CN201810522983.3A CN201810522983A CN108762718A CN 108762718 A CN108762718 A CN 108762718A CN 201810522983 A CN201810522983 A CN 201810522983A CN 108762718 A CN108762718 A CN 108762718A
- Authority
- CN
- China
- Prior art keywords
- array
- matrix
- row
- concurrent
- screening
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/24—Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
Abstract
本发明提供一种提高计算机运算速度的并发筛选排序方法,假设对n个元素的数组A=[a1,…,ai,…,an]进行排序,在计算机系统中,构造大小为n×(n+1)的并行处理逻辑矩阵M,矩阵M分为两部分,矩阵第一列为最左边一列M1,M1按行顺序存储了数组A,剩下方阵为处理逻辑矩阵M2。M2中每个元素都称为筛孔。M2中第i列存储的每个元素为数组A中第i个元素。M1中每行元素即数组A中每个元素并发的发送到处理逻辑矩阵M2中对应行的每个元素进行筛选,然后将筛选后的结果累加,累加后的结果就是该筛孔所代表的元素在数组中的位置。本发明在资源充足,并发率100%的条件下,可达到排序效率的极限;这对现代计算机系统及今后量子计算机系统的运算速度有极大的影响。
Description
技术领域
本发明属于计算机技术领域,涉及一种提高计算机运算速度的方法,具体涉及一种提高计算机运算速度的并发筛选排序方法。
背景技术
一般排序算法有两种分类形式,按算法执行的步骤来分,可以分为串行排序和并发排序。按照元素存储的方式分,可分为基于链表式存储元素的排序和基于索引式存储元素的排序。经典排序一般都是基于索引式存储的串行或并发排序。
串行排序相对比较成熟,比较经典的串行排序算法主要有冒泡排序,选择排序,插入排序,希尔排序,堆排序,归并排序以及快速排序等。其中快速排序和归并排序是经典排序中效率最高的两种排序方法,其时间复杂度可达到O(nlogn),在系统中运用十分广泛。
串行排序算法一般应用在单处理器的环境中。在按一定拓扑结构连接起来的多核多处理器的计算机环境中,为了充分利用计算资源,可以采用并行排序算法来提高排序速度。并行排序算法可以由串行排序算法得来,比如说,快速排序和归并排序,其中就存在有些步骤可以并发执行。
现在的并行排序算法主要是基于专门的硬件结构来进行设计的,这种专用的硬件排序结构被称之为排序网络。
比较经典的排序网络是Bacther在上世纪60年代在归并排序的基础上提出了奇偶归并网络和双调归并网络,其排序网络时间复杂度达到了o(log2n)。Dei Lei Lee和KennthE.Batcher提出了LB网络,Bruce Parker和Ian Parberry提出了PP排序网络,这两种都是基于多路归并的排序网络,这两种排序网络(假设是k路归并)时间复杂度达到了O(logk 2n),并且这两种排序网络还需要某些特定归并硬件器材的支持。
1975年,Murller和Preparata使用更灵活的网络元件构造了枚举排序网络,其时间复杂度为O(logn),比Bateher排序网络加速了(logn)倍。可从实用性的角度来看,Bathcer的排序网络更加简单易行。
1983年,Ajtai,Komlos和Szemeredi基于扩展图构造了AKS排序网络。其时间复杂度为O(logn)。由于无实用的扩展图结构,因此AKS排序网络的实现还有一定的难度。并且AKS排序网络中存在的较大常数也限制了该排序网络的具体应用。
1994年,Minze.V.Chien和A.Yavuz,ourc提出了适应排序网络,该排序网络的时间复杂度与Batcher排序网络是一样的,但降低了成本。
计算机系统中除了时间以外,任何资源都可以通过更新换代的方式进行扩容和升级,在宏观世界中唯独时间是均匀流逝的。实质上,时间是一种刚性的不可再生的最为稀缺的资源。现代的计算机系统经常会出现在计算资源还存在大量盈余的情况下,程序本身的运行速度已经达到了无法提升的极限。
无论从系统高层还是底层来看,排序操作都是计算机系统中最基本并且使用最频繁的操作之一,如果能利用计算机并发的特性来提高排序的速度,将极大的提升计算机系统总体的运算速度。
发明内容
为了解决当今并发网络计算资源利用率不足的问题,提高排序的速度,本发明提供了一种提高计算机运算速度的并发筛选排序方法。
本发明所采用的技术方案是:一种提高计算机运算速度的并发筛选排序方法,其特征在于:假设对n个元素的数组A=[a1,…,ai,…,an]进行排序,在计算机系统中,构造大小为n×(n+1)的并行处理逻辑矩阵M,矩阵M分为两个部分,其中矩阵的第一列M1按行的顺序存储数组A,剩下的方阵称为处理逻辑矩阵M2;M2中的每个元素均视为一筛孔,M2中第i列存储的每个元素都是数组A中的第i个元素;
所述方法包括以下步骤:
步骤1:M1中的每个元素并发的发送到处理逻辑矩阵M2的对应行中进行比较;
定义函数:Comp(ai,aj)=1当ai>aj,或ai=aj且i>=j;
Comp(ai,aj)=0当ai<aj,或ai=aj且i<j;
其中,ai表示处理逻辑矩阵M2中的数,aj表示M1中的数;
步骤2:将比较后的结果进行累加,得到排序后元素ai在数组中的顺序为
本发明在资源充足,并发率达到100%的条件下,可以达到排序效率的极限。
附图说明
图1为本发明实施例中现有技术的筛选原理图;
图2为本发明实施例中现有技术的并发筛选原理图;
图3为本发明实施例的并发筛选排序原理图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
筛子是人类生产和生活中经常用到的工具。其主要作用是通过动力按照筛孔的大小将物质进行分类。如图1和图2分别为筛选示意图和并发筛选原理图。
在图1和图2中,每个带数字圆圈都代表圆圈内的数字本身。图1左边区域的是需要筛选的元素,右边区域的是筛孔,由于筛孔与颗粒是一对多的关系,因此这种筛选操作只能是顺序式的操作。也就是说一个元素接一个元素的筛选,筛选出一个小于筛孔的数就将筛孔数值的序号加1。筛选可以对筛孔大小的元素进行定位操作。比如说1,3,5,7这4个数字组成一个数组,以数组中的数字5作为筛孔,经过4次筛选动作,检查一共有多少个数字通过了筛孔或者多少个数字没有通过筛孔,就可以得出按照升序数字5是排在第3位(假设通过筛孔,计数器就加1。约定元素与筛孔同等大小能通过筛孔则最终结果就是通过筛孔的元素之和,如果出现多个同等大小的数字,就需要对下标再进行一次比较)。假设一个筛选动作的时间为t1,累加动作的时间为t2时间,那么将数字5定位就需要4(t1+t2)的时间。如果引入并发思想,也就是说,引入多个同尺寸的筛孔,这样就可以实现并发筛选操作了。图2就是一种引入并发思想的筛选操作,筛孔与颗粒是一对一的关系,也就是说任何一个颗粒进行筛选动作和累加动作时是不依赖其他颗粒的筛选动作的。同样针对1,3,5,7这4个数字组成的数组,也是需要4个筛选动作,然后检查一共有多少个数字通过了筛孔,或者多少个数字没有通过筛孔,就能将其定位出来,但是由于这几个动作是并发的关系,因此理论上来说,在理想状态下只需要t1+t2时间就可以将数字5定位出来。
在顺序排序的前提下,采用筛选法进行排序,效率是最低的,但是筛选法的优点是任意两个元素相互比较时没有依赖性,也就是说,筛选排序有很好的并发特性。
采用并发筛选进行排序:在资源足够的前提下,采用并发筛选的思想可以极大的提高排序的效率。
假设数组A=[a1..an],采用并发筛选法进行排序的示意图如3所示(这里不再采用圆圈的大小来表达数组元素的大小,每个带圆圈的数组元素代表数组元素自身):
图3中以虚线为分界,左边是数组,右边是以数组元素为筛孔的筛孔区域。右边的每一列都是以数组中的一个元素作为筛孔。
假设对n个元素的数组A=[a1,…,ai,…,an]进行排序,在计算机系统中,构造大小为(n+1)×n的并行处理逻辑矩阵M(如图3所示),矩阵M分为两个部分,其中矩阵的第一列,也就是图中最左边一列为M1,M1按行的顺序存储了数组A,剩下的方阵也叫处理逻辑矩阵为M2。M2中的每个元素都被称为筛孔。M2中第i列存储的每个元素都是数组A中的第i个元素。
本实施例提供的一种提高计算机运算速度的并发筛选排序方法,包括以下步骤:
步骤1:M1中的每个元素并发的发送到处理逻辑矩阵M2的对应行中进行比较;
定义函数:Comp(ai,aj)=1当ai>aj,或ai=aj且i>=j;
Comp(ai,aj)=0当ai<aj,或ai=aj且i<j;
其中,ai表示处理逻辑矩阵M2中的数(即筛孔元素),aj表示M1中的数(即数组元素);
步骤2:将比较后的结果进行累加,得到排序后元素ai在数组中的顺序为
处理逻辑矩阵M2中第i列筛孔元素就是数组中的元素ai,如果数组中的元素比筛孔元素ai小,则对应的位置函数加1,最后将n个比较的结果统计起来,就是ai在数组中排序后的位置。在资源充足,并发率达到100%的条件下,排序只需要t1+t2的时间就可以完成(同样假设一个筛选动作时间即比较的时间为t1,累加动作时间为t2),如果需要排序的数组中存在着相同数值的元素,则在比较元素数值大小后还要对元素的初始顺序即元素的序数进行比较,并参照初始顺序的先后对数值相等的元素进行定位,元素序数的比较同样采用筛选排序的方式,同样,元素序数的比较也是可以并发进行的,并且可以和数值一起并发进行,因此其排序时间也只需t1+t2。但是如果实际情况中等值元素很少的情况下,可以采用在判断存在元素数值相等的情况下再对其原始序数进行比较,序数比较完成后再将结果累加,因此,这种方法减少了比较次数,其排序时间为2*t1+t2。理论上来说,并发筛选排序已经达到了排序速度的极限。这对现代的计算机系统以及今后量子计算机系统的运算速度都有极大的影响。
以下通过具体实施例对本发明最进一步的阐述:假设一个数组A=[14,8,2,8,6,13,8,26],即a1=14,a2=8,a3=2,a4=8,a5=6,a6=13,a7=8,a8=26
首先构造出并行逻辑处理矩阵,即表1中第2行至第8行的部分,具体请见下表1;
表1数组A生成的并行逻辑处理矩阵
a1 | a2 | a3 | a4 | a5 | a6 | a7 | a8 | |
14 | 14 | 8 | 2 | 8 | 6 | 13 | 8 | 26 |
8 | 14 | 8 | 2 | 8 | 6 | 13 | 8 | 26 |
2 | 14 | 8 | 2 | 8 | 6 | 13 | 8 | 26 |
8 | 14 | 8 | 2 | 8 | 6 | 13 | 8 | 26 |
6 | 14 | 8 | 2 | 8 | 6 | 13 | 8 | 26 |
13 | 14 | 8 | 2 | 8 | 6 | 13 | 8 | 26 |
8 | 14 | 8 | 2 | 8 | 6 | 13 | 8 | 26 |
26 | 14 | 8 | 2 | 8 | 6 | 13 | 8 | 26 |
然后,按照规则并发比较,如表2所示;
表2矩阵并发处理过程
其中:f1、f2、f3、f4、f5、f6、f7、f8分别代表
数组A通过并发处理得出排序后变成A’,其数组元素顺序为a3=2,a5=6,a2=8,a4=8,a7=8,a6=13,a1=14,a8=26。通过这样的并发操作就完成了排序,即A’=[2,6,8,8,8,13,14,26]。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
Claims (1)
1.一种提高计算机运算速度的并发筛选排序方法,其特征在于:假设对n个元素的数组A=[a1,…,ai,…,an]进行排序,在计算机系统中,构造大小为n×(n+1)的并行处理逻辑矩阵M;矩阵M分为两个部分,其中矩阵的第一列M1按行的顺序存储数组A,剩下的方阵称为处理逻辑矩阵M2;M2中的每个元素均视为一筛孔,M2中第i列存储的每个元素都是数组A中的第i个元素;
所述方法包括以下步骤:
步骤1:M1中的每个元素并发的发送到处理逻辑矩阵M2的对应行中进行比较;
定义函数:Comp(ai,aj)=1 当ai>aj,或ai=aj且i>=j;
Comp(ai,aj)=0 当ai<aj,或ai=aj且i<j;
其中,ai表示处理逻辑矩阵M2中的数,aj表示M1中的数;
步骤2:将比较后的结果进行累加,得到排序后元素ai在数组中的顺序为
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810522983.3A CN108762718B (zh) | 2018-05-28 | 2018-05-28 | 一种提高计算机运算速度的并发筛选排序方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810522983.3A CN108762718B (zh) | 2018-05-28 | 2018-05-28 | 一种提高计算机运算速度的并发筛选排序方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108762718A true CN108762718A (zh) | 2018-11-06 |
CN108762718B CN108762718B (zh) | 2022-03-04 |
Family
ID=64002975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810522983.3A Active CN108762718B (zh) | 2018-05-28 | 2018-05-28 | 一种提高计算机运算速度的并发筛选排序方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108762718B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114172911A (zh) * | 2021-10-29 | 2022-03-11 | 青岛海享智科技有限公司 | 群控系统控制方法、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5621908A (en) * | 1992-10-21 | 1997-04-15 | Fujitsu Limited | Parallel sorting system to reduce the amount of communication between processing devices |
TW200306089A (en) * | 2001-12-27 | 2003-11-01 | Interdigital Tech Corp | Insertion sorter |
JP2012089128A (ja) * | 2010-10-11 | 2012-05-10 | Fujitsu Ltd | パラレルシフトアルゴリズムを利用してbddを処理する方法及びシステム |
CN105843781A (zh) * | 2015-02-02 | 2016-08-10 | 国际商业机器公司 | 执行大型稀疏矩阵运算中用于缓存效率的矩阵排序的方法和系统 |
CN106250097A (zh) * | 2016-06-22 | 2016-12-21 | 中国科学院计算技术研究所 | 一种面向大数据的加速排序装置、方法、芯片、处理器 |
-
2018
- 2018-05-28 CN CN201810522983.3A patent/CN108762718B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5621908A (en) * | 1992-10-21 | 1997-04-15 | Fujitsu Limited | Parallel sorting system to reduce the amount of communication between processing devices |
TW200306089A (en) * | 2001-12-27 | 2003-11-01 | Interdigital Tech Corp | Insertion sorter |
JP2012089128A (ja) * | 2010-10-11 | 2012-05-10 | Fujitsu Ltd | パラレルシフトアルゴリズムを利用してbddを処理する方法及びシステム |
CN105843781A (zh) * | 2015-02-02 | 2016-08-10 | 国际商业机器公司 | 执行大型稀疏矩阵运算中用于缓存效率的矩阵排序的方法和系统 |
CN106250097A (zh) * | 2016-06-22 | 2016-12-21 | 中国科学院计算技术研究所 | 一种面向大数据的加速排序装置、方法、芯片、处理器 |
Non-Patent Citations (2)
Title |
---|
毛广敏: ""常用C语言排序算法解析"", 《软件导刊》 * |
覃贤立: ""并行排序算法的设计与分析"", 《电脑与信息技术》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114172911A (zh) * | 2021-10-29 | 2022-03-11 | 青岛海享智科技有限公司 | 群控系统控制方法、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108762718B (zh) | 2022-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kiveris et al. | Connected components in mapreduce and beyond | |
Anandkumar et al. | High-dimensional structure estimation in Ising models: Local separation criterion | |
US8126911B2 (en) | System and method for content-based partitioning and mining | |
Raghavendra et al. | Graph expansion and the unique games conjecture | |
Galinier et al. | An efficient memetic algorithm for the graph partitioning problem | |
Li et al. | Coded distributed computing: Straggling servers and multistage dataflows | |
CN102308533B (zh) | 对报文进行分类的方法及装置 | |
Heydenreich et al. | Structures in supercritical scale-free percolation | |
US11238106B2 (en) | Fingerprints for compressed columnar data search | |
Schlag et al. | Scalable edge partitioning | |
Hu et al. | Output-optimal massively parallel algorithms for similarity joins | |
Baroni et al. | Nonuniversality of weighted random graphs with infinite variance degree | |
Zhong et al. | Coded caching schemes with linear subpacketizations | |
CN108762718A (zh) | 一种提高计算机运算速度的并发筛选排序方法 | |
Cao et al. | An improved method to build the KD tree based on presorted results | |
Har-Peled et al. | Reliable spanners for metric spaces | |
Balogh et al. | On the path separation number of graphs | |
CN108717352A (zh) | 一种提高计算机运算速度的并发筛选插入排序方法 | |
CN111723089A (zh) | 一种基于列式存储格式处理数据的方法和装置 | |
Baroni et al. | First passage percolation on random graphs with infinite variance degrees | |
Giakkoupis et al. | Low randomness rumor spreading via hashing | |
Parberry | On the computational complexity of optimal sorting network verification | |
Hu et al. | Output-sensitive skyline algorithms in external memory | |
CN109522915B (zh) | 病毒文件聚类方法、装置及可读介质 | |
CN112612790A (zh) | 卡号配置方法、装置、设备及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |