CN101162471B - 一种插入排序的方法和装置 - Google Patents

一种插入排序的方法和装置 Download PDF

Info

Publication number
CN101162471B
CN101162471B CN200710187206XA CN200710187206A CN101162471B CN 101162471 B CN101162471 B CN 101162471B CN 200710187206X A CN200710187206X A CN 200710187206XA CN 200710187206 A CN200710187206 A CN 200710187206A CN 101162471 B CN101162471 B CN 101162471B
Authority
CN
China
Prior art keywords
data
node
key word
sequencing queue
node data
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.)
Expired - Fee Related
Application number
CN200710187206XA
Other languages
English (en)
Other versions
CN101162471A (zh
Inventor
林云
王新建
韩新伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN200710187206XA priority Critical patent/CN101162471B/zh
Publication of CN101162471A publication Critical patent/CN101162471A/zh
Application granted granted Critical
Publication of CN101162471B publication Critical patent/CN101162471B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了一种插入排序的方法,用于将待插入数据的关键字按排序队列中节点数据的关键字的排序规则插入所述排序队列,包括以下步骤:将所述排序队列中各节点数据的关键字与所述待插入数据的关键字进行比较;根据所述比较结果对所述排序队列中的节点数据进行移位操作;在进行所述移位操作的同时将所述待插入数据插入所述排序队列。通过本发明实施例,在一个时钟周期内完成比较、移位和插入操作,取消了反向移位逻辑,使应用该插入排序的方法的排序器可以实现线速工作,并且简化了排序器的设计,扩大了排序器的应用范围。

Description

一种插入排序的方法和装置
技术领域
本发明涉及电子技术领域,特别涉及一种插入排序的方法和装置。
背景技术
目前在大规模的集成电路设计中经常会用到排序器,例如在交换网中,通过排序器选择最短或最长队列,最高或最低优先级,以及最长或最短排队时间的数据包等。
其中,插入法排序器是一种经常被用到的电路。插入法排序的原理是:每次将一个待排序的数值例如:数据或关键字,按其大小插入到前面已经顺序排好的长度为N的序列中的适当位置,并得到一个顺序排好的长度为N+1的序列。重复以上步骤,直到全部数值完全插入为止。假设待排序的数值存放在数组R[1,...,n]中。初始时,R[1]自成一个序列,从i=2起直至i=n为止,依次将R[i]按插入算法插入到当前的序列R[1,...,i-1]中,最终生成含n个数值的序列。一个典型的直接插入法排序电路如图1所示。
排序器中每一个节点(Node)存贮一个数值。在初始情况下,所有节点中都保存一个-∞值,即较待排序数据的最小值更小的值。然后依次插入待排序数据。在排序器运行过程中,排序器中的各节点已经按照关键字的大小排好了顺序,假设图1中排序器各节点关键字从左到右依次减小。当一个新的数据InsertData到来后,将该InsertData与所有排序节点中的数据同时进行比较。若SortNode[i]<InsertData(SortNode[i]为第i个排序节点所存储的关键字)则该节点所保存的内容向右移动一个位置。实际上,该节点右边,包括该节点,所有的节点都会自然地向右边移一位;反之若SortNode[i]>=InsertData,则SortNode[i]不移动。最后InsertData会找到自己该插入的合适位置,然后写入相应的节点。
以上所述排序器可以做适当改动以作为选择器,用于从不同递增或递减序列中选择当前最小或最大的数值。如图2所示,为排序器电路的应用实例— —最小选择电路的示意图。该应用中有5个关键字递增的序列Seq[i](i=0~4)与一个5节点的排序器。该排序器可以从5个序列中选出关键字最小的元素。
现有技术中插入选择器的排序和选择流程为:
1、排序器所有节点向右移动,“推出”最小节点;并且在左边插入一个最大值节点。
2、插入新数据,大关键字的数据向左移动。
其过程如图3所示,其中,图3(a)为排序器的初始状态,图3(b)为向右移动推出最小节点的示意图,图3(c)为推出最小节点之后的状态,图3(d)为大节点向左移动插入新节点的示意图,图3(e)为排序器排序的最终状态。图3中的“最大值”表示该节点比任何一个节点的关键字都大。
现有的排序器虽然可以完成排序功能,但排序速度相对较低,每两个时钟周期进行一次排序。在某些对排序速度有较高要求的应用场合中,该排序电路就不能完全胜任。特别是在对数据要求实时处理的应用场合中,现有的排序器完会成为瓶颈。
因此,现有技术的缺点是:排序器的排序速度低,不能用于对排序速度有较高要求的场合,不能满足数据实时处理的要求。
发明内容
本发明实施例要解决的问题是提供一种插入排序的方法和装置,以实现提高插入排序器的排序速度,满足数据实时处理的要求的目的。
为达到上述目的,本发明实施例一方面提供了一种插入排序的方法,用于将待插入数据的关键字按排序队列中节点数据的关键字的排序规则插入所述排序队列,包括以下步骤:将所述排序队列中各节点数据的关键字与所述待插入数据的关键字进行比较;根据所述比较的结果对所述排序队列中的节点数据进行移位操作;在进行所述移位操作的同时将所述待插入数据插入所述排序队列;在将待插入节点插入排序队列的同时推出排序队列中的最小点;所述比较操作、所述移位操作和所述插入操作在一个时钟周期内完成。
另一方面,本发明实施例还提供了一种插入排序器,用于将待插入数据的关键字按排序队列中节点数据的关键字的排序规则插入所述排序队列,包 括:比较模块,用于将排序队列中各节点数据的关键字与所述待插入数据的关键字进行比较;移位模块,与所述比较模块连接,用于根据所述比较模块的比较结果对所述排序队列中的节点数据进行移位操作;插入模块,与所述移位模块连接,用于在所述移位模块进行移位操作的同时将所述待插入数据插入所述排序队列;在将待插入节点插入排序队列的同时推出排序队列中的最小点;所述比较模块的比较操作、所述移位模块的移位操作和所述插入模块的插入操作在一个时钟周期内完成。
再一方面,本发明实施例还提供了一种数据选择的方法,包括以下步骤:对输入队列输入的数据进行排序,根据所述排序的结果对排序队列中的数据进行移位操作,并输出所述排序队列的最大或最小值数据;从所述最大或最小值数据所在的输入队列读取待插入数据,在进行所述移位操作的同时将所述待插入数据插入所述排序队列;所述移位操作、所述插入操作在一个时钟周期内完成”。
再一方面,本发明实施例还提供了一种选择器,包括:排序输出模块,用于对输入队列输入的数据进行排序,根据所述排序的结果对排序队列中的数据进行移位操作,并输出所述排序队列的最大或最小值数据;数据读取插入模块,用于在所述排序输出模块输出所述排序队列的最大或最小值数据之后,从所述最大或最小值数据所在的输入队列读取待插入数据,在进行所述移位操作的同时将所述待插入数据插入所述排序队列;所述排序输出模块的移位操作和所述数据读取插入模块的插入操作在一个时钟周期内完成”。
与现有技术相比,本发明实施例具有以下优点:通过本发明实施例,在将待插入节点插入排序队列的同时推出排序队列中的最小节点,使得插入排序器可以在一个时钟周期内选择出最小数据,使插入排序器实现了线速工作。
附图说明
图1为现有技术插入排序器的示意图;
图2为现有技术插入排序器的应用实例示意图;
图3为现有技术直接插入排序的排序流程图;
图4为本发明实施例排序原理示意图;
图5为本发明实施例排序过程示意图;
图6为本发明实施例插入排序器的结构图;
图7为本发明实施例插入排序器的排序过程示意图;
图8为本发明实施例插入排序的方法的流程图;
图9为本发明实施例数据选择的方法的流程图;
图10为本发明实施例选择器的结构图。
具体实施方式
本发明实施例提供了一种插入排序的方法,通过本发明实施例,在将待插入节点插入排序队列的同时推出排序队列中的最小节点,精简了插入排序的步骤,使得可以在一个时钟周期内完成上述两个步骤,从而使插入排序器实现了线速工作。本发明实施例提供了一种在已排好序的排序队列中插入节点的方法,将以只移动小于该待插入节点的排序节点为例进行说明。本发明实施例中的排序队列使用的排序方法为直接插入排序法,现将其排序原理介绍如下,排序原理示意图如图4所示,图4中IQ(Input Queue,输入队列)为输入队列,Sorter为直接插入排序器。待排序的数据从IQ的左端输入,然后由IQ的右端出队,进入排序器排序。从排序器右端出去的数据要求排序关键字满足由小到大的递增。Sorter中的0/4表示数据的关键字为0,来自第4个IQ队列。
在对输入队列进行排序之前先做如下规定:
(1)输入到每个IQ的数据的排序关键字总是递增的。
(2)排序器每次排序都必须输出一个数据,并且从IQ读取下一个数据进入排序器。
(3)排序器需要记住排序数据的源IQ队列号。排序数据输出后需要从该数据对应的IQ队列输入一个新的信元。
排序过程如图5所示,图5(a)表示的是在初始时刻,排序器中的所有关键字均为0,每个IQ各输入一个数据。排序器输出最小关键字数据(关键字为0)。因为是从1号队列输出的最小关键字数据,所以再从1号IQ队列中插入一个新的数据(关键字为4)。所以排序结束之后的Sorter状况如图5(b)所示。接着输出最小关键字数据(关键字为0)。因为是从2号IQ输出的信元,所以从2号IQ再输入一个数据到排序器,如图5(c)所示。同理,下两次排序后的排序器状况分别为图5(d)、(e)所示,在图5(e)中,由于输入的数据的 排序关键字为2,所以图5(d)中的数据2被插入到排序队列的中间位置。下一时刻,各个IQ又重新输入新的数据,如图5(f)所示。
第二轮排序的前两次排序后排序器状况分别如图5(g)所示。这时,需要从第四号IQ中读入一个新的数据,但第四号IQ已经没有数据了。这时就需要Sorter自己产生一个数据,数据的排序关键字为上次该IQ中数据的关键字(这里为3)。所以后两次排序后,排序器还是如图5(g)所示的状况。这样做是为了等待所有IQ中还没有到来的关键字为3、4的信元。不让第2号IQ中的关键字为5的数据先出去。接下来又来了3个数据,如图5(h)所示。经过一次排序之后,排序器的状况如图5(i)所示。后续的排序过程与第一轮的排序过程类似,如图5(j)~(m)所示,在此不再赘述。经过上述排序过程之后,最终得到的排序队列为从左到右依次递减的排序队列。当然也可以通过上述过程得到以其他方式排序的排序队列,但本发明实施例以从左到右依次递减的排序队列为例进行说明。
如图6所示,为本发明实施例插入排序器的结构图,该插入排序器用于将待插入数据的关键字按排序队列中节点数据的关键字的排序规则插入排序队列,包括:
比较模块61,用于将排序队列中各节点数据的关键字与待插入数据的关键字进行比较;
移位模块62,与比较模块61连接,用于根据比较模块61的比较结果对排序队列中的节点数据进行移位操作;
插入模块63,与移位模块62连接,用于在移位模块62进行移位操作的同时将待插入数据插入排序队列。
其中,移位模块62包括:小数据移位子模块621,用于将小节点数据向节点数据的关键字小于该小节点数据的关键字的节点方向进行移位操作,该小节点数据为排序队列节点数据中关键字小于或等于待插入数据的关键字的节点数据;或者,
大数据移位子模块622,用于将大节点数据向节点数据的关键字大于该大节点数据的关键字的节点方向进行移位操作,该大节点数据为排序队列节点 数据中关键字大于或等于待插入数据的关键字的节点数据。
其中,插入模块63具体为空节点插入模块,用于将待插入数据插入排序队列的空节点,该空节点通过对排序队列中的节点数据进行移位操作获得。
其中,比较模块61的比较操作、移位模块62的移位操作和插入模块63的插入操作在一个时钟周期内完成。
其中,比较模块61通过组合逻辑电路实现,移位模块62通过时序电路实现。当然也可以其他方式实现,只要能实现上述功能即可。
本发明实施例提出的插入排序器的排序过程如图7所示,其中图7(a)为排序器的初始状态,图7(b)为各排序节点与待插入节点进行比较的示意图,图7(c)为排序结束后排序器的最终状态。由图7可以看出,本发明实施例提出的插入排序器取消了现有技术中读出最小值之后的向左移位的步骤,加快了处理速度,并且取消了反向移位逻辑,简化了排序器的设计。
如图8所示,为本发明实施例插入排序的方法的流程图,该插入排序的方法用于将待插入数据的关键字按排序队列中节点数据的关键字的排序规则插入排序队列,具体包括以下步骤:
步骤S801,将排序队列中各节点数据的关键字与待插入数据的关键字进行比较。本发明实施例提供了一种在已排好序的排序队列中插入数据的方法,在要将新的数据插入该排序队列时,先将该待插入数据的关键字与排序队列中已排好序的节点数据的关键字进行比较。
步骤S802,根据比较结果对排序队列中的节点数据进行移位操作。在将待插入数据的关键字与排序队列中节点数据的关键字进行比较之后,根据比较结果对排序队列中的节点数据进行移位操作。具体为:将小节点数据向节点数据的关键字小于该小节点数据的关键字的节点方向进行移位操作,该小节点数据为排序队列节点数据中关键字小于或等于待插入数据的关键字的节点数据;或者,
将大节点数据向节点数据的关键字大于该大节点数据的关键字的节点方向进行移位操作,该大节点数据为排序队列节点数据中关键字大于或等于待插入数据的关键字的节点数据。
步骤S803,在进行移位操作的同时将待插入数据插入排序队列。这时该排序队列中原来的最大或最小节点将被推出排序队列,从而输出了排序队列的最大值或最小值。将待插入数据插入排序队列具体为:将待插入数据插入排序队列的空节点,该空节点通过对排序队列中的节点数据进行移位操作获得。
上述步骤S801的比较操作、步骤S802的移位操作和步骤S803的插入操作均在一个时钟周期内完成。其中比较操作可以通过组合逻辑电路实现,移位操作可以通过时序电路实现,当然也可以其他方式实现,只要能实现上述功能即可。一种应用本发明实施例提供的插入排序法的排序器的排序过程如图7所示。由图7可以看出,本发明实施例提出的插入排序的方法取消了现有技术中读出最小值之后的向左移位的步骤,加快了处理速度,并且取消了反向移位逻辑,简化了应用该插入排序的方法的排序器的设计。
上述插入排序的方法,取消了现有技术中读出最小值之后的反向移位步骤,精简了排序步骤,使排序器实现了线速工作。并且由于直接插入排序电路简单易用,占用的电路资源小,扩大了直接插入排序器的使用范围,使得一些对带宽要求较高的电路中也可以使用该直接插入排序器。
如图9所示,为本发明实施例数据选择的方法的流程图,具体包括以下步骤:
步骤S901,对输入队列输入的数据进行排序,根据排序结果对输入队列中的数据进行移位操作,并输出该排序队列的最大或最小值数据。选择器根据预定的排序规则对输入队列输入的数据进行排序,根据排序结果对输入队列中的数据进行移位操作。现将排序原理介绍如下,排序原理示意图如图4所示,图4中IQ(Input Queue,输入队列)为输入队列,Sorter为选择器。待排序的数据从IQ的左端输入,然后由IQ的右端出队,进入选择器排序。从选择器右端出去的数据要求排序关键字满足由小到大的递增。Sorter中的0/4表示数据的关键字为0,来自第4个IQ队列。
在对输入队列进行排序之前先做如下规定:
(1)输入到每个IQ的数据的排序关键字总是递增的。
(2)选择器每次排序都必须输出一个数据,并且从IQ读取下一个数据进入排序器。
(3)选择器需要记住排序数据的源IQ队列号。排序数据输出后需要从该数据对应的IQ队列输入一个新的信元。
排序过程如图5所示,图5(a)表示的是在初始时刻,选择器中的所有关键字均为0,每个IQ各输入一个数据。选择器按从左至右依次减小的顺序对输入的数据进行排序,并输出该排序队列的最小值,即每进行一次排序,选择器可以从输入队列输入的数据中选择出一个最大或最小值。
步骤S902,从最大或最小值数据所在的输入队列读取数据,在进行移位操作的同时将该数据插入排序队列。在进行第一次排序之后,选择器输出最小关键字数据(关键字为0)。因为第一次排序是从1号队列输出的最小关键字数据,所以在进行第二次排序之前,选择器再从1号IQ队列中读取一个新的数据(关键字为4)插入排序队列,并输出最小关键字数据(关键字为0)。第二次排序结束之后的Sorter状况如图5(b)所示。因为是从2号IQ输出的信元,所以从2号IQ再读取一个新的数据,在进行移位操作的同时将该数据插入排序队列,如图5(c)所示。同理,下两次排序后的选择器状况分别为图5(d)、(e)所示,在图5(e)中,由于输入的数据的排序关键字为2,所以图5(d)中的数据2被插入到排序队列的中间位置,同时Sorter输出最小值2。下一时刻,各个IQ又重新输入新的数据,如图5(f)所示。
第二轮排序的前两次排序后选择器状况分别如图5(g)所示。这时,需要从第四号IQ中读入一个新的数据,但第四号IQ已经没有数据了。这时就需要Sorter自己生成一个数据,数据的排序关键字为上次该IQ中数据的关键字(这里为3)。所以后两次排序后,选择器还是如图5(g)所示的状况。这样做是为了等待所有IQ中还没有到来的关键字为3、4的信元。不让第2号IQ中的关键字为5的数据先出去。接下来又来了3个数据,如图5(h)所示。经过一次排序之后,选择器的状况如图5(i)所示。后续的排序过程与第一轮的排序过程类似,如图5(j)~(m)所示,在此不再赘述。
如图10所示,为本发明实施例选择器的结构图,包括:排序输出模块101, 用于对输入队列输入的数据进行排序,根据排序结果对排序队列中的数据进行移位操作,并输出排序队列的最大或最小值;
数据读取插入模块102,与排序输出模块101连接,用于在排序输出模块101输出排序队列的最大或最小值之后,从最大或最小值所在的输入队列读取数据,在进行移位操作的同时将数据插入排序队列。
其中,该选择器还包括:数据生成模块103,与数据读取插入模块102连接,用于当最大或最小值所在的输入队列没有数据输入时,生成一个数据,该数据的关键字为最大或最小值数据的关键字。
其中,排序输出模块101包括:小数据排序子模块1011,用于将小节点数据向节点数据的关键字小于该小节点数据的关键字的节点方向进行移位操作,该小节点数据为排序队列节点数据中关键字小于或等于输入数据关键字的节点数据;或者,
大数据排序子模块1012,用于将大节点数据向节点数据的关键字大于该大节点数据的关键字的节点方向进行移位操作,该大节点数据为排序队列节点数据中关键字大于或等于输入数据关键字的节点数据。
其中,数据读取插入模块102包括:数据读取子模块1021,用于在排序输出模块101输出排序队列的最大或最小值数据之后,从最大或最小值数据所在的输入队列读取待插入数据;
数据插入子模块1022,用于将待插入数据插入排序队列的空节点,该空节点通过对排序队列中的节点数据进行移位操作获得。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此, 任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (18)

1.一种插入排序的方法,用于将待插入数据的关键字按排序队列中节点数据的关键字的排序规则插入所述排序队列,其特征在于,包括以下步骤:
将所述排序队列中各节点数据的关键字与所述待插入数据的关键字进行比较;
根据所述比较的结果对所述排序队列中的节点数据进行移位操作;
在进行所述移位操作的同时将所述待插入数据插入所述排序队列,在将待插入节点插入排序队列的同时推出排序队列中的最小点;
所述比较操作、所述移位操作和所述插入操作在一个时钟周期内完成。
2.如权利要求1所述插入排序的方法,其特征在于,所述根据比较结果对所述排序队列中的节点数据进行移位操作包括:
将小节点数据向节点数据的关键字小于所述小节点数据的关键字的节点方向进行移位操作,所述小节点数据为所述排序队列节点数据中关键字小于或等于所述待插入数据的关键字的节点数据;或者,
将大节点数据向节点数据的关键字大于所述大节点数据的关键字的节点方向进行移位操作,所述大节点数据为所述排序队列节点数据中关键字大于或等于所述待插入数据的关键字的节点数据。
3.如权利要求1所述插入排序的方法,其特征在于,所述将待插入数据插入所述排序队列包括:将所述待插入数据插入所述排序队列的空节点,所述空节点通过对所述排序队列中的节点数据进行移位操作获得。
4.如权利要求1所述插入排序的方法,其特征在于,所述将排序队列中各节点数据的关键字与所述待插入数据的关键字进行比较通过组合逻辑电路实现。
5.如权利要求1所述插入排序的方法,其特征在于,所述根据比较结果对所述排序队列中的节点数据进行移位操作通过时序电路实现。
6.一种插入排序器,用于将待插入数据的关键字按排序队列中节点数据的关键字的排序规则插入所述排序队列,其特征在于,包括:
比较模块,用于将排序队列中各节点数据的关键字与所述待插入数据的关键字进行比较; 
移位模块,与所述比较模块连接,用于根据所述比较模块的比较结果对所述排序队列中的节点数据进行移位操作;
插入模块,与所述移位模块连接,用于在所述移位模块进行移位操作的同时将所述待插入数据插入所述排序队列,在将待插入节点插入排序队列的同时推出排序队列中的最小点;
所述比较模块的比较操作、所述移位模块的移位操作和所述插入模块的插入操作在一个时钟周期内完成。
7.如权利要求6所述插入排序器,其特征在于,所述移位模块包括:
小数据移位子模块,用于将小节点数据向节点数据的关键字小于所述小节点数据的关键字的节点方向进行移位操作,所述小节点数据为所述排序队列节点数据中关键字小于或等于所述待插入数据的关键字的节点数据;或者,
大数据移位子模块,用于将大节点数据向节点数据的关键字大于所述大节点数据的关键字的节点方向进行移位操作,所述大节点数据为所述排序队列节点数据中关键字大于或等于所述待插入数据的关键字的节点数据。
8.如权利要求6所述插入排序器,其特征在于,所述插入模块为空节点插入模块,用于将所述待插入数据插入所述排序队列的空节点,所述空节点通过对所述排序队列中的节点数据进行移位操作获得。
9.如权利要求6所述插入排序器,其特征在于,所述比较模块通过组合逻辑电路实现。
10.如权利要求6所述插入排序器,其特征在于,所述移位模块通过时序电路实现。
11.一种数据选择的方法,其特征在于,包括以下步骤:
对输入队列输入的数据进行排序,根据所述排序的结果对排序队列中的数据进行移位操作,并输出所述排序队列的最大或最小值数据;
从所述最大或最小值数据所在的输入队列读取待插入数据,在进行所述移位操作的同时将所述待插入数据插入所述排序队列;
所述移位操作、所述插入操作在一个时钟周期内完成。 
12.如权利要求11所述数据选择的方法,其特征在于,还包括:如果所述最大或最小值数据所在的输入队列没有数据输入,则生成一个数据,所述数据的关键字为所述最大或最小值数据的关键字。
13.如权利要求11所述数据选择的方法,其特征在于,所述根据排序结果对所述排序队列中的数据进行移位操作包括:
将小节点数据向节点数据的关键字小于所述小节点数据的关键字的节点方向进行移位操作,所述小节点数据为所述排序队列节点数据中关键字小于或等于所述输入数据关键字的节点数据;或者,
将大节点数据向节点数据的关键字大于所述大节点数据的关键字的节点方向进行移位操作,所述大节点数据为所述排序队列节点数据中关键字大于或等于所述输入数据关键字的节点数据。
14.如权利要求11所述数据选择的方法,其特征在于,在进行所述移位操作的同时将所述待插入数据插入所述排序队列包括:将所述待插入数据插入所述排序队列的空节点,所述空节点通过对所述排序队列中的节点数据进行移位操作获得。
15.一种选择器,其特征在于,包括:
排序输出模块,用于对输入队列输入的数据进行排序,根据所述排序的结果对排序队列中的数据进行移位操作,并输出所述排序队列的最大或最小值数据;
数据读取插入模块,用于在所述排序输出模块输出所述排序队列的最大或最小值数据之后,从所述最大或最小值数据所在的输入队列读取待插入数据,在进行所述移位操作的同时将所述待插入数据插入所述排序队列;
所述排序输出模块的移位操作和所述数据读取插入模块的插入操作在一个时钟周期内完成。
16.如权利要求15所述选择器,其特征在于,还包括:数据生成模块,用于当所述最大或最小值数据所在的输入队列没有数据输入时,生成一个数据,所述数据的关键字为所述最大或最小值数据的关键字。
17.如权利要求15所述选择器,其特征在于,所述排序输出模块包括: 
小数据排序子模块,将小节点数据向节点数据的关键字小于所述小节点数据的关键字的节点方向进行移位操作,所述小节点数据为所述排序队列节点数据中关键字小于或等于所述输入数据关键字的节点数据;或者,
大数据排序子模块,将大节点数据向节点数据的关键字大于所述大节点数据的关键字的节点方向进行移位操作,所述大节点数据为所述排序队列节点数据中关键字大于或等于所述输入数据关键字的节点数据。
18.如权利要求15所述选择器,其特征在于,所述数据读取插入模块包括:
数据读取子模块,用于在所述排序输出模块输出所述排序队列的最大或最小值数据之后,从所述最大或最小值数据所在的输入队列读取待插入数据;
数据插入子模块,用于将所述待插入数据插入所述排序队列的空节点,所述空节点通过对所述排序队列中的节点数据进行移位操作获得。
CN200710187206XA 2007-11-15 2007-11-15 一种插入排序的方法和装置 Expired - Fee Related CN101162471B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200710187206XA CN101162471B (zh) 2007-11-15 2007-11-15 一种插入排序的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200710187206XA CN101162471B (zh) 2007-11-15 2007-11-15 一种插入排序的方法和装置

Publications (2)

Publication Number Publication Date
CN101162471A CN101162471A (zh) 2008-04-16
CN101162471B true CN101162471B (zh) 2010-12-15

Family

ID=39297396

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200710187206XA Expired - Fee Related CN101162471B (zh) 2007-11-15 2007-11-15 一种插入排序的方法和装置

Country Status (1)

Country Link
CN (1) CN101162471B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102695128A (zh) * 2011-03-21 2012-09-26 中兴通讯股份有限公司 一种组呼业务中发送通知命令的方法、装置及系统
KR101667097B1 (ko) 2011-06-28 2016-10-17 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 시프트 가능 메모리
CN103890856B (zh) * 2011-10-27 2017-07-11 慧与发展有限责任合伙企业 支持内存储数据结构的可移位存储器
CN103890857B (zh) * 2011-10-27 2017-02-15 慧与发展有限责任合伙企业 采用环形寄存器的可移位的存储器
KR101660611B1 (ko) 2012-01-30 2016-09-27 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 워드 시프트 정적 랜덤 액세스 메모리(ws-sram)
US9542307B2 (en) 2012-03-02 2017-01-10 Hewlett Packard Enterprise Development Lp Shiftable memory defragmentation
CN104199895B (zh) * 2014-08-26 2017-04-26 河南中医学院 一种基于双体内存系统的大数据实时排序处理器
CN104484397A (zh) * 2014-12-16 2015-04-01 上海合合信息科技发展有限公司 图像文档自动排序方法及装置
CN107729135B (zh) * 2016-08-11 2021-03-16 创新先进技术有限公司 按序进行并行数据处理的方法和装置
CN106446295A (zh) * 2016-11-23 2017-02-22 努比亚技术有限公司 数据排序方法及装置

Also Published As

Publication number Publication date
CN101162471A (zh) 2008-04-16

Similar Documents

Publication Publication Date Title
CN101162471B (zh) 一种插入排序的方法和装置
US6647449B1 (en) System, method and circuit for performing round robin arbitration
CN1938992B (zh) 用于加权随机调度的方法和装置
CN106797446A (zh) 基于存储器的历史搜索
Muppala et al. Composite performance and availability analysis using a hierarchy of stochastic reward nets
CN103312825A (zh) 一种数据分布存储方法和装置
CN101604261A (zh) 超级计算机的任务调度方法
CN106302172A (zh) 同时支持哈希查找和路由查找的存储、查找方法和装置
EP1491011B1 (en) Packet scheduling mechanism
CN104202428A (zh) 分布式文件存储系统及文件存储方法
Sauer Marking optimization of weighted marked graphs
US20090182714A1 (en) Sorting apparatus and method
CN117176638A (zh) 一种路由路径确定方法及相关组件
US8255623B2 (en) Ordered storage structure providing enhanced access to stored items
CN102207846A (zh) 一种实现数据排序的电路和方法
CN116450334A (zh) Gpu资源调度方法
CN115208954A (zh) 用于分布式数据处理的并行策略预置系统及其方法
Chan et al. The sorting buffer problem is NP-hard
CN103258035B (zh) 数据处理的方法和装置
Sklyarov et al. Modeling, design, and implementation of a priority buffer for embedded systems
CN101859325A (zh) 一种数据表项的查找处理方法和装置
CN104504126A (zh) 一种并行向量查表方法及装置
Zhang et al. An efficient parallel VLSI sorting architecture
Kohutka et al. Heap queue: a novel efficient hardware architecture of MIN/MAX queues for real-time systems
CN103038744A (zh) 数据移位器及其控制方法、复用器、数据筛分器和数据分类器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101215

Termination date: 20191115