CN108717352A - 一种提高计算机运算速度的并发筛选插入排序方法 - Google Patents
一种提高计算机运算速度的并发筛选插入排序方法 Download PDFInfo
- Publication number
- CN108717352A CN108717352A CN201810522989.0A CN201810522989A CN108717352A CN 108717352 A CN108717352 A CN 108717352A CN 201810522989 A CN201810522989 A CN 201810522989A CN 108717352 A CN108717352 A CN 108717352A
- Authority
- CN
- China
- Prior art keywords
- array
- sieve pore
- sequence
- row
- computer
- 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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种提高计算机运算速度的并发筛选插入排序方法,假设数组A=[a1,…,ai,…,an]。假设有k个元素b1、b2、…、bk组成的数组B插入到数组A中,构造包含n行k列的处理逻辑矩阵M,M中每个元素均视为一个筛孔,处理逻辑矩阵M中的第h列表示存储的都是数组B中第h个数组元素bh;首先将数组B进行内部排序按升序排好;然后将数组A中每个元素跟对应的筛孔元素进行比较,获取b1到bk相对数组A中每一元素位置;若元素ag比bh小,则bh就在对应筛孔数组元素自己序数的基础上加1,即其下标变为h+1;若比筛孔大,筛孔的数组A中的元素ag下标加1,即其下标变为g+1。本发明利用并发的特性,采用更少的时间,就达成元素插入排序的结果。
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使用更灵活的网络元件构造了枚举排序网络[29],其时间复杂度为O(logn),比Bateher排序网络加速了(logn)倍。可从实用性的角度来看,Bathcer的排序网络更加简单易行。
1983年,Ajtai,Komlos和Szemeredi基于扩展图构造了AKS排序网络。其时间复杂度为O(logn)。由于无实用的扩展图结构,因此AKS排序网络的实现还有一定的难度。并且AKS排序网络中存在的较大常数也限制了该排序网络的具体应用"
1994年,Minze.V.Chien和A.Yavuz,ourc提出了适应排序网络,该排序网络的时间复杂度与Batcher排序网络是一样的,但降低了成本。
无论从系统高层还是底层来看,排序操作都是计算机系统中最基本并且使用最频繁的操作之一,如果能利用计算机并发的特性来提高排序的速度,将极大的提升计算机系统总体的运算速度。
发明内容
针对当今并发网络计算资源利用率不足的问题,为了提高排序的速度,本发明提供了一种提高计算机运算速度的并发筛选插入排序方法。
本发明所采用的技术方案是:一种提高计算机运算速度的并发筛选插入排序方法,假设数组A=[a1,…,ai,…,an],假设有k个元素b1、b2、…、bk组成的数组B插入到数组A中;构造包含n行k列的处理逻辑矩阵M,M中每个元素均视为一个筛孔,处理逻辑矩阵M中的第h列存储的都是数组B中第h个数组元素bh;
其特征在于,所述方法包括以下步骤:
步骤1:将数组B进行内部排序按升序从b1到bk排好;
步骤2:将数组A中的每个元素跟对应的筛孔元素进行比较,获取b1到bk相对于数组A中每一个元素的位置;如果进行比较的数组A中的元素ag比筛孔元素bh小,则被插入元素bh就在对应筛孔数组元素自己序数的基础上加1,即其下标变为h+1;如果进行比较的数组A中的元素ag大于等于筛孔元素bh,那对应筛孔的数组A中的元素ag下标加1,即其下标变为g+1。
本发明利用并发的特性,采用更少的时间,就达成元素插入排序的结果。
附图说明
图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定位出来。
在顺序排序的前提下,采用筛选法进行排序,效率是最低的,但是筛选法的优点是任意两个元素相互比较时没有依赖性,也就是说,筛选排序有很好的并发特性。
在实际的操作中,尤其是在大数据处理以及数据库操作中,经常遇到的是插入排序操作。
假设多个元素b1,b2……bk组成的数组B插入到由a1,a2……an组成的已经排序好的数组A中,如图3所示。图3中左边第一列表示的是数组A中的各个元素,右边的每一列表示的是数组B中n个相同的数组元素。
本实施例提供的一种提高计算机运算速度的并发筛选插入排序方法,假设数组A=[a1,…,ai,…,an],假设有k个元素b1、b2、…、bk组成的数组B插入到数组A中;构造包含n行k列的处理逻辑矩阵M(如图3所示),M中每个元素均视为一个筛孔,处理逻辑矩阵M中的第h列存储的都是数组B中第h个数组元素bh;
所述方法包括以下步骤:
步骤1:将数组B进行内部排序按升序从b1到bk排好;
则步骤1的具体实现包括以下子步骤:
步骤1.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中的数(即数组元素);
步骤1.2:将比较后的结果进行累加,得到排序后元素ai在数组中的顺序为
步骤2:将数组A中的每个元素跟对应的筛孔元素进行比较,获取b1到bk相对于数组A中每一个元素的位置;如果进行比较的数组A中的元素ag比筛孔元素bh小,则被插入元素bh就在对应筛孔数组元素自己序数的基础上加1,即其下标变为h+1;如果进行比较的数组A中的元素ag大于等于筛孔元素bh,那对应筛孔的数组A中的元素ag下标加1,即其下标变为g+1。
步骤2的具体实现过程为:
定义:
当bi>aj,或bi=aj且在插入元素和被插入元素相等的情况下,要求插入元素排在被插入元素之前时(插入元素优先);
Comp(bi,aj)=1,Comp(aj,bi)=0;
当bi<aj,或bi=aj且在插入元素和被插入元素相等的情况下,要求被插入元素排在插入元素之前时(被插入元素优先);
Comp(bi,aj)=0,Comp(aj,bi)=1;
其中,bi表示数组B中的元素,aj表示数组A中的元素;
假设数组A中一共有n个元素,而数组B中一共有m个元素,将比较后的结果进行累加,得到排序后数组A中的元素ai在排序后新数组中的顺序为 数组B中的元素bj在排序后新数组中的顺序为
以下通过具体实施例对本发明做进一步的阐述;
假设数组A=[2,5,7,7,11,21],即a1=2,a2=5,a3=7,a4=7,a5=11,a6=21。
进行插入的并已经排序好的数组B=[4,7,7,13],即b1=4,b2=7,b3=7,b4=13。
并且采取的是插入元素优先的原则,即插入元素与被插入元素相等的情况下,插入元素排在前面。
构造处理逻辑矩阵M,如下表1;
表1
b1 | b2 | b3 | b4 |
4 | 7 | 7 | 13 |
4 | 7 | 7 | 13 |
4 | 7 | 7 | 13 |
4 | 7 | 7 | 13 |
4 | 7 | 7 | 13 |
4 | 7 | 7 | 13 |
为了便于说明,将数组A和处理逻辑矩阵组合成一个新矩阵M1,如下表2;
表2
然后,按照规则并发比较,如表3所示;
表3数组B插入数组A的并发处理过程
这样就得出新数组的顺序为a1,b1,a2,b2,b3,a3,a4,a5,b4,a6。
相对于并发筛选排序,并发筛选插入排序所需的时间是其两倍,但是元素比较的次数要少。假设n个数组成的数组排序,如果直接用并发筛选排序,比较的次数需要n2如果采用并发筛选插入排序的方法,假设将n分成两部分,一部分有x个元素,另一部分有n-x个元素,那么,元素需要比较的次数有x2+(n-x)2+x(n-x)=n2-nx+x2。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
Claims (3)
1.一种提高计算机运算速度的并发筛选插入排序方法,假设数组A=[a1,…,ai,…,an],假设有k个元素b1、b2、…、bk组成的数组B插入到数组A中;构造包含n行k列的处理逻辑矩阵M,M中每个元素均视为一个筛孔,处理逻辑矩阵M中的第h列存储的都是数组B中第h个数组元素bh;
其特征在于,所述方法包括以下步骤:
步骤1:将数组B进行内部排序按升序从b1到bk排好;
步骤2:将数组A中的每个元素跟对应的筛孔元素进行比较,获取b1到bk相对于数组A中每一个元素的位置;如果进行比较的数组A中的元素ag比筛孔元素bh小,则被插入元素bh就在对应筛孔数组元素自己序数的基础上加1,即其下标变为h+1;如果进行比较的数组A中的元素ag大于等于筛孔元素bh,那对应筛孔的数组A中的元素ag下标加1,即其下标变为g+1。
2.根据权利要求1所述的提高计算机运算速度的并发筛选插入排序方法,其特征在于,步骤1的具体实现过程为:
假设对n个元素的数组A=[a1,…,ai,…,an]进行排序,在计算机系统中,构造大小为(n+1)×n的并行处理逻辑矩阵M,矩阵M分为两个部分,其中矩阵的第一列M1按行的顺序存储数组A,剩下的方阵称为处理逻辑矩阵M2;M2中的每个元素均视为一筛孔,M2中第i列存储的每个元素都是数组A中的第i个元素;
步骤1.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中的数;
步骤1.2:将比较后的结果进行累加,得到排序后元素ai在数组中的顺序为
3.根据权利要求1所述的提高计算机运算速度的并发筛选插入排序方法,其特征在于,步骤2的具体实现过程为:
定义:
当bi>aj,或bi=aj且在插入元素和被插入元素相等的情况下,要求插入元素排在被插入元素之前时;
Comp(bi,aj)=1,Comp(aj,bi)=0;
当bi<aj,或bi=aj且在插入元素和被插入元素相等的情况下,要求被插入元素排在插入元素之前时;
Comp(bi,aj)=0,Comp(aj,bi)=1;
其中,bi表示数组B中的元素,aj表示数组A中的元素;
假设数组A中一共有n个元素,而数组B中一共有m个元素,将比较后的结果进行累加,得到排序后数组A中的元素ai在排序后新数组中的顺序为 数组B中的元素bj在排序后新数组中的顺序为
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810522989.0A CN108717352B (zh) | 2018-05-28 | 2018-05-28 | 一种提高计算机运算速度的并发筛选插入排序方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810522989.0A CN108717352B (zh) | 2018-05-28 | 2018-05-28 | 一种提高计算机运算速度的并发筛选插入排序方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108717352A true CN108717352A (zh) | 2018-10-30 |
CN108717352B CN108717352B (zh) | 2021-07-06 |
Family
ID=63911486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810522989.0A Active CN108717352B (zh) | 2018-05-28 | 2018-05-28 | 一种提高计算机运算速度的并发筛选插入排序方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108717352B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1085495A (en) * | 1964-10-19 | 1967-10-04 | Sperry Rand Corp | Card controller |
CN1612100A (zh) * | 2003-10-27 | 2005-05-04 | 陈启星 | 分级定位排序和分级定位查找的动态查找表的算法 |
CN101192847A (zh) * | 2007-08-13 | 2008-06-04 | 中兴通讯股份有限公司 | 一种峰值搜索和排序的装置及峰值排序方法 |
US7647438B1 (en) * | 2006-05-09 | 2010-01-12 | Integrated Device Technology, Inc. | Binary base address sorting method and device with shift vector |
CN102663061A (zh) * | 2012-03-30 | 2012-09-12 | Ut斯达康通讯有限公司 | 一种大容量查找表快速排序和查找装置及其实现方法 |
CN104914433A (zh) * | 2015-06-15 | 2015-09-16 | 南京航空航天大学 | 一种基于链表排序的os-cfar多目标提取的实现方法 |
CN105654552A (zh) * | 2014-11-10 | 2016-06-08 | 国家海洋局第海洋研究所 | 一种面向任意分布大规模点云数据的快速Delaunay构网方法 |
CN105912561A (zh) * | 2016-02-26 | 2016-08-31 | 优势拓展(北京)科技有限公司 | 全景图像的网络发布方法和系统及设备 |
CN107423423A (zh) * | 2017-08-02 | 2017-12-01 | 刘伟 | 数据排序方法、人工智能、图像处理、大数据库、互联网搜索、通讯、云系统 |
-
2018
- 2018-05-28 CN CN201810522989.0A patent/CN108717352B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1085495A (en) * | 1964-10-19 | 1967-10-04 | Sperry Rand Corp | Card controller |
CN1612100A (zh) * | 2003-10-27 | 2005-05-04 | 陈启星 | 分级定位排序和分级定位查找的动态查找表的算法 |
US7647438B1 (en) * | 2006-05-09 | 2010-01-12 | Integrated Device Technology, Inc. | Binary base address sorting method and device with shift vector |
CN101192847A (zh) * | 2007-08-13 | 2008-06-04 | 中兴通讯股份有限公司 | 一种峰值搜索和排序的装置及峰值排序方法 |
CN102663061A (zh) * | 2012-03-30 | 2012-09-12 | Ut斯达康通讯有限公司 | 一种大容量查找表快速排序和查找装置及其实现方法 |
CN105654552A (zh) * | 2014-11-10 | 2016-06-08 | 国家海洋局第海洋研究所 | 一种面向任意分布大规模点云数据的快速Delaunay构网方法 |
CN104914433A (zh) * | 2015-06-15 | 2015-09-16 | 南京航空航天大学 | 一种基于链表排序的os-cfar多目标提取的实现方法 |
CN105912561A (zh) * | 2016-02-26 | 2016-08-31 | 优势拓展(北京)科技有限公司 | 全景图像的网络发布方法和系统及设备 |
CN107423423A (zh) * | 2017-08-02 | 2017-12-01 | 刘伟 | 数据排序方法、人工智能、图像处理、大数据库、互联网搜索、通讯、云系统 |
Non-Patent Citations (2)
Title |
---|
林榕慧: "先进数据技术", 《电脑编程技巧与维护》 * |
毛广敏: "常用C语言排序算法解析", 《软件导刊》 * |
Also Published As
Publication number | Publication date |
---|---|
CN108717352B (zh) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11514045B2 (en) | Structured cluster execution for data streams | |
Boesel et al. | Using ranking and selection to “clean up” after simulation optimization | |
Nesetril et al. | Mathematics of Ramsey theory | |
CN100568179C (zh) | 一种基于关系的测试用例生成方法 | |
Trifunović et al. | Parallel multilevel algorithms for hypergraph partitioning | |
Cheraghchi | Noise-resilient group testing: Limitations and constructions | |
Cai et al. | Grotesque: noisy group testing (quick and efficient) | |
Li et al. | Compressed coded distributed computing | |
Djidjev et al. | Scalable and accurate graph clustering and community structure detection | |
Marie et al. | Boosting schema matchers | |
CN105183824B (zh) | 数据整合方法及装置 | |
US20120109981A1 (en) | Generating progressive query results | |
van Laarhoven et al. | Graph clustering with local search optimization: The resolution bias of the objective function matters most | |
Cao et al. | An improved method to build the KD tree based on presorted results | |
Alipour et al. | Improvements on the k-center problem for uncertain data | |
Watson | Nonnegative rank vs. binary rank | |
CN108762718A (zh) | 一种提高计算机运算速度的并发筛选排序方法 | |
CN108717352A (zh) | 一种提高计算机运算速度的并发筛选插入排序方法 | |
CN111209305A (zh) | 查询数据的方法、数据节点、分布式数据库、计算设备 | |
CN108536824B (zh) | 一种数据处理方法及装置 | |
Baroni et al. | First passage percolation on random graphs with infinite variance degrees | |
Konno et al. | Rigorous results on the threshold network model | |
Auer et al. | Abusing a hypergraph partitioner for unweighted graph partitioning. | |
Janssen et al. | Bratteli diagrams where random orders are imperfect | |
Sasao | Multiple-Valued Index Generation Functions: Reduction of Variables by Linear Transformation. |
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 |