CN101510215A - 一种计算机系统中的数据处理方法和系统 - Google Patents

一种计算机系统中的数据处理方法和系统 Download PDF

Info

Publication number
CN101510215A
CN101510215A CNA2009101062165A CN200910106216A CN101510215A CN 101510215 A CN101510215 A CN 101510215A CN A2009101062165 A CNA2009101062165 A CN A2009101062165A CN 200910106216 A CN200910106216 A CN 200910106216A CN 101510215 A CN101510215 A CN 101510215A
Authority
CN
China
Prior art keywords
data
integrated
auxiliary array
value
integrated 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.)
Granted
Application number
CNA2009101062165A
Other languages
English (en)
Other versions
CN101510215B (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.)
Actions Technology Co Ltd
Original Assignee
Actions Semiconductor 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 Actions Semiconductor Co Ltd filed Critical Actions Semiconductor Co Ltd
Priority to CN2009101062165A priority Critical patent/CN101510215B/zh
Publication of CN101510215A publication Critical patent/CN101510215A/zh
Application granted granted Critical
Publication of CN101510215B publication Critical patent/CN101510215B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明适用于计算机系统中的电数字数据处理领域,提供了一种数据处理方法和系统,所述方法包括下述步骤:设立一个辅助数组;判断预设的辅助数组是否足以存储数据序列,当所述辅助数组足以存储所述数据序列时,对所述数据序列进行位图排序,否则采用快速排序将所述数据序列分成多个分组数据;判断所述辅助数组是否足以存储所述分组数据,当所述辅助数组足以存储所述分组数据时,对所述分组数据进行位图排序,否则采用快速排序将所述分组数据分成多个新的分组数据,循环执行,直至所述辅助数组足以存储分组数据。通过将位图排序和快速排序进行结合,在对数据进行快排分组的过程中,对数据比较紧凑的分组使用位图排序,从而提高了数据排序的性能。

Description

一种计算机系统中的数据处理方法和系统
技术领域
本发明属于计算机系统中的电数字数据处理领域,尤其涉及一种计算机系统中的数据处理方法及系统。
背景技术
现有的两种典型的数据排序方法是快速排序法和位图排序法。其中快速排序法的过程简述如下:先从数据元素中选一个数据作为基准数据,并将数据元素中小于基准数据的数据排在基准数据的右方(也可以排在左方),将数据元素中大于基准数据的数据排在基准数据的左方(也可以排在右方),再对基准数据左右两边的数据元素分别用同样的方法处理,直到每一个数据元素的长度为1,排序结束。快速排序法是一种平均性能最好的排序方法。但是快速排序法的效果依赖于数据的分布情况,如当数据呈倒序排列时,排序的性能达到最坏。
位图排序法是一种典型的空间换时间的方法,其通过开辟辅助数组实现数据序列的排序,数组实际上就是一组相同数据类型变量,既一组数据序列,在数据排序中就是一组排序序列。如果一个数组中的一个变量也是一个数组,就构成了二维数组。用同样的方法可以构成多维数组。在使用数组以前需要定义一个数组,辅助数组则是在数据处理中起辅助作用设立的数组。当数据比较稠密时,位图排序法可以达到较好的排序效果。虽然位图排序不依赖于数据的分布,只要开辟的辅助数组的空间足够存储数据元素,则可以较短时间内将数据排好。但是由于位图排序法需要开辟辅助数组,且辅助数组的大小依赖于待排序的数据的范围,当待排序数据较稀疏,或待排序数据的范围过大时,由于难以开辟出合适大小的辅助数据,从而难以使用位图排序法对数据进行排序。其中数据稠密是指相邻的数据大小较接近,数据稀疏是指相邻的数据大小相差较大。其中数据稠密和数据稀疏是相对的,没有统一的标准。
发明内容
本发明的目的在于提供一种计算机系统中的数据处理方法,旨在解决现有的数据处理方法由于依赖于数据的分布或者数据范围过大而造成的数据排序效率低、性能差的问题。
本发明是这样实现的,一种计算机系统中的数据处理方法,包括:
(1)所述计算机系统建立一个辅助数组;
(2)判断所述辅助数组是否足以存储数据序列,若是,则对所述数据序列进行位图排序;若否,则采用快速排序将所述数据分成多个分组数据;
(3)判断所述辅助数组是否足以存储所述分组数据,若是,则对所述分组数据进行位图排序;若否,则采用快速排序将所述分组数据进一步分成多个新的分组数据,
(4)重复执行步骤(3),直至所述辅助数组足以存储分组数据。
进一步的,所述采用快速排序将分组数据分成多个分组数据的步骤具体为:
从所述分组数据中选择一个数据作为基准数据;
将所述分组数据中小于基准数据的数据元素排在基准数据的正向,将所述分组数据中大于基准数据的数据元素排在基准数据的反向,以将所述分组数据分成小于基准数据的分组数据、包括基准数据的分组数据、以及大于基准数据的分组数据。
进一步的,所述判断预设的辅助数组是否足以存储分组数据的步骤具体为:
当存在与分组数据正向临近的基准数据时,将与分组数据正向临近的基准数据确定为分组数据的最小值,否则将数据序列中数据元素的最小值确定为分组数据的最小值;
当存在与分组数据反向临近的基准数据时,将与分组数据反向临近的基准数据确定为分组数据的最大值,否则将数据序列中数据元素的最大值作为分组数据的最大值;
将分组数据的最大值与最小值之差加1的值与所述辅助数组的大小进行比较,当分组数据的最大值与最小值之差加1的值小于或等于所述辅助数组的大小时,判定辅助数组足以存储分组数据,否则判定辅助数组不足以存储分组数据。
本发明的另一目的在于解决现有的数据处理方法由于依赖于数据的分布或者数据范围过大而造成的数据排序效率低、性能差的问题,从而提高数据排序的效率和性能。提供一种计算机系统中的数据处理系统,所述系统包括:
辅助数组设置单元,用于建立辅助数组;
空间大小判断单元,用于判断预设的辅助数组是否足以存储数据序列,或者判断所述辅助数组是否足以存储分组数据;
快速排序分组单元,用于在所述空间大小判断单元判定辅助数组不足以存储所述数据序列时,采用快速排序法对所述数据进行分组,将所述数据分成多个分组数据,或者在所述空间大小判断单元判定辅助数组不足以存储分组数据时,采用快速排序法对分组数据进行分组,将分组数据分成多个新的分组数据;
位图排序单元,用于在所述空间大小判断单元判定辅助数组足以存储所述数据序列时,对所述数据序列进行位图排序,或者在所述空间大小判断单元判定辅助数组足以存储分组数据时,对分组数据进行位图排序。
进一步的,所述快速排序分组单元包括:
基准数据确定模块,用于从所述分组数据中选择一个数据元素作为基准数据;
数据分组模块,用于将所述分组数据中小于基准数据的数据排在基准数据的正向,将所述分组数据中大于基准数据的数据排在基准数据的反向,以将所述分组数据分成小于基准数据的分组数据、包括基准数据的分组数据、以及大于基准数据的分组数据。
进一步的,所述空间大小判断单元包括:
最大值确定模块,用于当存在与分组数据正向临近的基准数据时,将与分组数据正向临近的基准数据确定为分组数据的最小值,否则将数据序列中数据元素的最小值确定为分组数据的最小值;
最小值确定模块,用于当存在与分组数据反向临近的基准数据时,将与分组数据反向临近的基准数据确定为分组数据的最大值,否则将数据序列中数据元素的最大值作为分组数据的最大值;
大小判断模块,用于将分组数据的最大值与最小值之差加1的值与所述辅助数组的大小进行比较,当分组数据的最大值与最小值之差加1的值小于或等于所述辅助数组的大小时,则判定辅助数组足以存储分组数据,否则判定辅助数组不足以存储分组数据。
在本发明实施例中,通过将位图排序和快速排序进行结合,通过快速排序对数据序列或者分组数据进行分组,使分组数据内的数据元素逐渐趋于紧凑和有序,再通过对分组数据进行位图排序,从而提高了数据排序方法的性能。对于稀疏数据,由于对可以进行位图排序的分组数据进行位图排序,从而不会降低快速排序的性能,最坏情况下退化为快速排序法;对于稠密数据,在不能直接使用位图排序时,可以通过快速排序对分组数据后,再进行位图排序,从而提高了数据排序的效率。
附图说明
图1是本发明实施例提供的数据排序方法的实现流程图;
图2是本发明实施例提供的数据排序系统的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,预先设置用于位图排序的辅助数组的大小,当辅助数组足够存储数据序列时,对数据序列进行位图排序,否则采用快速排序法将数据序列分成多个分组数据,当辅助数组足够存储分组数据时,对分组数据进行位图排序,否则继续采用快速排序法将分组数据再分成多个分组数据,直至数据序列排序完毕。
图1示出了本发明实施例提供的计算机系统中的数据处理方法的实现流程,详述如下:
在步骤S101中,建立一个辅助数组。
在实际应用中,在预先设置用于位图排序的辅助数组的大小时,可以将辅助数组的大小设置为系统可以提供的内存大小,也可以根据系统可以提供的内存大小以及数据序列中数据元素的范围来设置。当根据系统可以提供的内存大小以及数据序列中数据元素的范围来设置时,预先设置用于位图排序的辅助数组的大小的步骤具体为:
查找数据序列中数据元素的最大值Maxnum和最小值Minnum,并计算数据元素的最大值和最小值之差SIZE1为:SIZE1=Maxnum-Minnum。
获取系统可以提供的内存大小SIZE2,并将SIZE1和SIZE2中较小的一个作为辅助数组的大小SIZE。
在步骤S102中,判断辅助数组是否足够存储数据序列,如果是,则执行步骤S103,否则执行步骤S104。
在本发明实施例中,辅助数组存储数据的格式如下:下标为M的元素表示数据M有多少个。如假设数据序列为1,2,2,2,3,5,则该数据序列在辅助数组中的存储形式如下:
 
1 3 1 0 1
辅助数组的上述存储形式表示该数据序列中有一个1,三个2,一个3,零个4,一个5。
另假设数据序列为1,1,2,2,2,3,5,则该数据序列在辅助数组中的存储形式如下:
 
2 3 1 0 1
辅助数组的上述存储形式表示该数据序列中有两个1,三个2,一个3,零个4,一个5。
根据辅助数组的存储形式可知,当数据序列的最大值和最小值之差加1小于或者等于辅助数组的大小时,该辅助数组足以存储数据序列,否则辅助数组不足以存储数据序列。因此,在判断辅助数组是否足够存储数据序列时,直接将数据序列包括的数据元素的最大值与最小值之差加1的值与预先设置的辅助数组的大小SIZE进行比较,即将Maxnum-Minnum+1与SIZE进行比较,当Maxnum-Minnum+1小于或等于SIZE时,则判定辅助数组足以存储数据序列,否则判定辅助数组不足以存储数据序列。
在步骤S103中,对所述数据序列进行位图排序。由于位图排序的具体过程属于现有技术,此处不再赘述。由于只包括一个数据元素的数据序列已经是有序的,无须再对该数据序列进行排序,因此,在本发明实施例中,当数据序列包括的数据元素只有一个时,则无需对该数据序列进行位图排序。
在步骤S104中,采用快速排序法对数据序列进行分组,将数据序列分成多个分组数据。其具体步骤如下:
从数据D序列中任意选定一个数据B作为基准数据,将数据序列D中小于B的数据元素排在B的正向,将数据序列D中大于B的数据元素排在B的反向,从而将数据序列D分成三组,分别为小于基准数据的分组数据DL、包括基准数据的分组数据B、以及大于基准数据的分组数据DR。其中基准数据的正向和反向可以分别指基准数据的左方和右方,或者指基准数据的右方和左方。
在步骤S105中,针对每个分组数据,判断辅助数组是否足够存储该分组数据,如果否,则执行步骤S106,否则,执行步骤S107。
在本发明实施例中,针对每个分组数据,判断辅助数组是否足够存储该分组数据的步骤具体为:针对每个分组数据,查找该分组数据的最大值和最小值,再将该最大值与最小值之差加1后的值与为辅助数组分配的内存空间的大小SIZE进行比较,如果最大值与最小值之差加1后的值小于或者等于SIZE,则判定辅助数组的空间足以存储该分组数据中的数据元素,否则判定辅助数组的空间不足以存储该该分组数据中的数据元素。
由于针对每个分组数据,均要查找该分组数据中的最大值和最小值,从而增加了该排序方法的时间复杂度。为了加快该排序方法的排序速度,在本发明另一实施例中,当存在与分组数据正向临近的基准数据时,将与该分组数据正向临近的基准数据作为该分组数据的最小值,否则将数据序列中数据元素的最小值确定为分组数据的最小值。当存在与分组数据反向临近的基准数据时,将与分组数据反向临近的基准数据确定为分组数据的最大值,否则将数据序列中数据元素的最大值作为分组数据的最大值。
如在采用快速排序法对数据D进行分组时,选择基准数据为B,从而将数据元素分成小于基准数据B的分组数据BL、包括基准数据B的分组数据B、以及大于基准数据的分组数据BR。此时,将基准数据B作为分组数据BL的最大值,将数据序列中数据元素的最小值Minnum作为分组数据BL的最小值;同时将基准数据B作为分组数据BR的最小值,将数据序列中数据元素的最大值Maxnum作为分组数据BR的最大值。因此,此时,分组数据BL的最大值与最小值之差为B-Minnum,分组数据BR的最大值与最小值之差为Maxnum-B。此时,在针对每个分组数据,判断辅助数组的空间是否足够存储该分组数据中的数据元素的步骤具体为:
将B-Minnum+1的值与为辅助数组分配的内存空间的大小值SIZE进行比较,当B-Minnum+1小于或者等于SIZE时,判定辅助数组的空间足以存储分组数据BL中的数据元素,否则判定辅助数组的空间不足以存储分组数据BL中的数据元素。
将Maxnum-B+1的值与为辅助数组分配的内存空间的大小值SIZE进行比较,当Maxnum-B+1的值小于或者等于SIZE时,判定辅助数组的空间足以存储分组数据BR中的数据元素,否则判定辅助数组的空间不足以存储分组数据BR中的数据元素。
在步骤S106中,采用快速排序法对分组数据进行分组,将分组数据进一步分成多个新的分组数据后,执行步骤S105。
在步骤S107中,对分组数据进行位图排序。在本发明实施例中,当分组数据只包括一个数据元素时,则无需再对该分组数据中的数据元素进行位图排序。
通过以上步骤的描述,实质上本技术方案可以归结为如下的步骤:
(1)所述计算机系统建立一个辅助数组;
(2)所述计算机系统判断所述辅助数组是否足以存储所述数据序列,若是,则对所述数据序列进行位图排序;若否,则采用快速排序将所述数据序列分成多个分组数据;
(3)所述计算机系统判断所述辅助数组是否足以存储所述分组数据,若是,则对所述分组数据进行位图排序;若否,则采用快速排序将所述分组数据进一步分成多个新的分组数据,
(4)重复执行步骤(3),直至所述辅助数组足以存储分组数据。
经过上述排序步骤后,即可对数据序列进行排序。本发明实施例提供的数据处理方法结合了快速排序法和位图排序法的优点,在处理数据序列,尤其是比较稠密的数据序列时,可以明显提高数据排序的性能。通过快速排序法对数据序列进行分组,从而使分组数据趋于紧凑和有序,再采用位图排序法对分组数据进行排序,从而有效的提高了数据排序方法的性能。该排序方法可以在不影响快速排序法的性能的情况下,通过采用位图排序法提高数据排序的性能。
以下以一个具体的示例,对本发明实施例提供的数据处理方法进行进一步的说明,假设数据序列D中的数据元素分别为为9,7,10,12,8,6,5,4,1005,且假设系统可以为位图排序的辅助数组提供的内存大小SIZE2为6个整数的大小,即SIZE2=6。
1、设置用于位图排序的辅助数组的大小SIZE。
查找数据序列中数据元素的最大值Maxnum和最小值Minnum,得到Maxnum=1005,Minnum=4,则数据元素的最大值与最小值之差SIZE1为:SIZE1=Maxnum-Minnum=1005-4=1001,由于SIZE2<SIZE1,因此,将辅助数组的大小SIZE设置为:SIZE=SIZE1=6。
2、判断辅助数组是否足够存储数据序列。
由于Maxnum-Minnum+1=1005-4+1=1002>SIZE,因此,判定辅助数组不足以存储数据序列,从而不能对数据序列进行位图排序,需要采用快速排序法对数据序列D进行第一次分组,其具体步骤如下:
取数据序列D的第一个数据元素9作为基准数据,将数据序列D中小于9的数据元素排在9的左方,将数据序列D中大于9的数据元素排在9的右方,将数据序列分成小于9的分组数据DL、包括基准数据9的分组数据B、以及大干9的分组数据DR。分组后的数据D如下:
Figure A200910106216D00141
3、针对每个分组数据,判断辅助数组是否足够存储该分组数据中的数据元素。
对于分组数据DL,其最大值为第一次快速排序分组时的基准数据B,其值为9,最小值为数据D的最小值4,由于分组数据DL的最大值与最小值之差加1后的值9-4+1=6=SIZE,因此,判定辅助数组足以存储分组数据DL,所以,对分组数据DL进行位图排序,排序后的数据D如下所示:
Figure A200910106216D00142
对于分组数据DR,其最小值为第一次快速排序分组时的基准数据B,其值为9,最大值为数据D的最大值Maxnum,其值为1005,由于分组数据DR的最大值与最小值之差加1后的值1005-9+1=997>SIZE,因此,判定辅助数组不足以存储分组数据DR,不能对分组数据DR进行位图排序,需要采用快速排序法对分组数据DR中的数据元素进行第二次分组,其具体过程如下:
取分组数据DR中的第一个数据元素12作为基准数据,将分组数据DR中小于12的数据元素排在12的左方,将分组数据DR中大于12的数据元素排在12的右方,从而将分组数据DR分成小于12的分组数据DL1、包括基准数据12的分组数据B1、以及大于12的分组数据DR1。分组后的数据D如下:
Figure A200910106216D00151
4、针对每个分组数据,判断辅助数组是否足够存储该分组数据中的数据元素。
对于分组数据DL1,其只包括一个数据元素10,由于只包括一个数据元素的分组数据已经是有序的,无须再对分组数据DL1进行排序。
对于分组数据DR1,其也只包括一个数据元素1005,由于只包括一个数据元素的分组数据已经是有序的,无须再对分组数据DR1进行排序。经上述排序步骤后,即可得到数据序列D的序列如下:
Figure A200910106216D00152
以下以另一个具体的示例对本发明实施例提供的数据排序方法进行进一步的说明,假设数据序列D为21,23,22,5006,5004,5009,24,23,22,5009,5010,5011,21,19,23,6008,且假设系统可以为位图排序的辅助数组提供的内存大小SIZE2为6个整数的大小,即SIZE2=6。
1、设置用于位图排序的辅助数组的大小SIZE。
查找数据序列D中的最大值Maxnum和最小值Minnum,得到Maxnum=6008,Minnum=19,则数据序列D的最大值与最小值之差SIZE1为:SIZE1=Maxnum-Minnum=6008-19=5989,由于SIZE2<SIZE1,因此,将辅助数组的大小SIZE设置为:SIZE=SIZE1=6。
2、判断辅助数组是否足够存储数据序列D。
由于Maxnum-Minnum+1=6008-19+1=5990>SIZE,因此,判定辅助数组不足以存储数据序列D,从而不能对数据序列D进行位图排序,需要采用快速排序法对数据序列D进行第一次分组,其具体过程如下:
取数据序列D的第一个数据元素21作为基准数据,将数据序列D中小于21的数据元素排在21的左方,将数据序列D中大于21的数据元素排在21的右方,将数据序列分成小于21的分组数据DL、包括基准数据21的分组数据B、以及大于21的分组数据DR。分组后的数据D如下:
Figure A200910106216D00161
3、针对每个分组数据,判断辅助数组是否足够存储该分组数据中的数据元素。
对于分组数据DL,其只包括一个数据元素19,由于只包括一个数据元素的分组数据已经是有序的,无须再对该分组数据DL进行排序。
对于分组数据DR,其最小值为第一次快速排序分组时的基准数据B,其值为21,最大值为数据D的最大值Maxnum,其值为6008,由于分组数据DR的最大值与最小值之差加1后的值6008-21+1=5988>SIZE,因此,判定辅助数组不足以存储分组数据DR,不能对分组数据DR进行位图排序,需要采用快速排序法对分组数据DR中的数据元素进行第二次分组,其具体步骤如下:
取分组数据DR中的第一个数据元素22作为基准数据,将分组数据DR中小于22的数据元素排在22的左方,将分组数据DR中大于22的数据元素排在12的右方,从而将分组数据DR分成小于22的分组数据DL1、等于22的分组数据B1、以及大于22的分组数据DR1。分组后的数据D如下:
Figure A200910106216D00162
4、针对每个新的分组数据,判断辅助数组是否足够存储该分组数据中的数据元素。
对于分组数据DL1,其只包括一个数据元素21,由于只包括一个数据元素的分组数据已经是有序的,无须再对该分组数据DL1进行排序。
对于分组数据DR1,其最小值为第二次快速排序分组时的基准数据B1,其值为22,其最大值为数据D的最大值Maxnum,其值为6008,由于分组数据DR1的最大值与最小值之差加1后的值6008-22+1=5987>SIZE,因此,判定辅助数组不足以存储分组数据DR1,不能对分组数据DR1进行位图排序,需要采用快速排序法对分组数据DR1中的数据元素进行第三次分组,其具体步骤如下:
取分组数据DR1中的第一个数据元素5004作为基准数据,将分组数据DR1中小于5004的数据元素排在5004的左方,将分组数据DR1中大于5004的数据元素排在5004的右方,从而将分组数据DR1分成小于5004的分组数据DL2、包括基准数据5004的分组数据B2、以及大于5004的分组数据DR2。分组后的数据D如下:
5、针对每个新的分组数据,判断辅助数组是否足够存储该分组数据中的数据元素。
对于分组数据DL2,其最大值为第三次快速排序分组时的基准数据B2,其值为5004,最小值为第二次快速排序分组时的基准数据B1,其值为22,由于分组数据DL2的最大值与最小值之差加1后的值5004-22+1=4983>SIZE,因此,判定辅助数组不足以存储分组数据DL2,所以,不能对分组数据DL2进行位图排序,需要采用快速排序法对分组数据DL2中的数据元素进行第四次分组。其具体过程如下:
取分组数据DL2中的第一个数据元素23作为基准数据,将分组数据DL2中小于23的数据元素排在23的左方,将分组数据DL2中大于23的数据元素排在23的右方,从而将分组数据DL2分成小于23的分组数据DL3、包括基准数据23的分组数据B3、以及大于23的分组数据DR3。分组后的数据D如下:
Figure A200910106216D00172
对于分组数据DR2,其最小值为第三次快速排序分组时的基准数据B2,其值为5004,最大值为数据序列D的最大值Maxnum,其值为6008,由于分组数据DR2的最大值与最小值之差加1后的值6008-5004+1=1005>SIZE,因此,判定辅助数组不足以存储分组数据DR2,所以,不能对分组数据DR2进行位图排序,需要采用快速排序法对分组数据DR2中的数据元素也进行第四次分组。其具体过程如下:
取分组数据DR2中的第一个数据元素5010作为基准数据,将分组数据DR2中小于5010的数据元素排在5010的左方,将分组数据DR2中大于5010的数据元素排在5010的右方,从而将分组数据DR2分成小于5010的分组数据DL3’、包括基准数据5010的分组数据B3’、以及大于5010的分组数据DR3’。分组后的数据D如下:
Figure A200910106216D00181
7、针对每个新的分组数据,判断辅助数组是否足够存储该分组数据中的数据元素。
对于分组数据DL3,其最大值为第四次快速排序分组时的基准数据B3,其值为23,最小值为第二次快速排序分组时的基准数据B1,其值为22,由于分组数据DL3的最大值与最小值之差加1后的值23-22+1=2<SIZE,因此,判定辅助数组足以存储分组数据DL3,所以,对分组数据DL3进行位图排序,排序后的数据D如下所示:
Figure A200910106216D00182
对于分组数据DR3,其最大值为第三次快速排序分组时的基准数据B2,其值为5004,最小值为第四次快速排序分组时的基准数据B3,其值为23,由于分组数据DR3的最大值与最小值之差加1后的值5004-23+1=4982>SIZE,因此,判定辅助数组的空间不足以存储分组数据DR3,所以,不能对分组数据DR3进行位图排序,需要采用快速排序法对分组数据DR3中的数据元素进行第五次分组。其具体过程如下:
取分组数据DR3中的第一个数据元素24作为基准数据,将分组数据DR3中小于24的数据元素排在24的左方,将分组数据DR3中大于24的数据元素排在24的右方,从而将分组数据DR3分成小于24的分组数据DL4、包括基准数据24的分组数据B4、以及大于24的分组数据DR4。分组后的数据D如下:
Figure A200910106216D00191
对于分组数据DL3’,其最大值为第四次快速排序分组时的基准数据B3’,其值为5010,最小值为第三次快速排序分组时的基准数据B2,其值为5004,由于分组数据DL3’的最大值与最小值之差加1后的值5010-5004+1=7>SIZE,因此,判定辅助数组不足以存储分组数据DL3’,所以,不能对分组数据DL3’进行位图排序,需要采用快速排序法对分组数据DL3’中的数据元素进行分组。其具体过程如下:
取分组数据DL3’中的第一个数据元素5006作为基准数据,将分组数据DL3’中小于5006的数据元素排在5006的左方,将分组数据DL3’中大于5006的数据元素排在5006的右方,从而将分组数据DL3’分成小于5006的分组数据DL4’、包括基准数据5006的分组数据B4’、以及大于5006的分组数据DR4’。分组后的数据D如下:
Figure A200910106216D00192
对于分组数据DR3’,其最小值为第四次快速排序分组的基准数据B3’,其值为5010,其最大值为数据序列中数据元素的最大值Maxnum,其值为6008,由于分组数据DR3’的最大值与最小值之差加1后的值6008-5010+1=999>SIZE,因此,判定辅助数据的空间不足以存储数据DR3’,所以,不能对分组数据DR3’进行位图排序,需要采用快速排序法对分组数据DR3’中的数据元素也进行第五次分组。其具体过程如下:
取分组数据DR3’中的第一个数据元素5011作为基准数据,将分组数据DR3’中小于5011的数据元素排在5011的左方,将分组数据DR3’中大于5011的数据元素排在5011的右方,从而将分组数据DR3’分成小于5011的分组数据DL4”、包括基准数据5011的分组数据B4”、以及大于5011的分组数据DR4”。分组后的数据D如下:
Figure A200910106216D00201
8、针对每个新的分组数据,判断辅助数组的空间是否足够存储该分组数据中的数据元素。
对于分组数据DL4,其只包括一个数据23,由于只包括一个数据元素的分组数据已经是有序的,无须再对该分组数据DL4进行排序。
对于待排序分组DR4’,其最大值为第四次快速排序分组时的基准数据B3’,其值为5010,最小值为第五次快速排序分组时的基准数据B4’,其值为5006,由于分组数据DR4’的最大值与最小值之差加1后的值5010-5006+1=5<SIZE,因此,判定辅助数组的空间足以存储分组数据DR4’,所以,对分组数据DR4’进行位图排序,排序后的数据D如下:
Figure A200910106216D00202
对于分组数据DR4”,其只包括一个数据元素6008,由于只包括一个数据元素的分组数据已经是有序的,无须再对该分组数据DR4”进行排序。
经上述步骤后,数据D排序后的序列如下:
图2示出了本发明实施例提供的计算机系统中的数据处理系统的结构,为了便于说明,仅示出了与本发明实施例相关的部分。该数据处理系统可以应用于任何有排序需求的电子设备或者软件系统中。其中:
辅助数组设置单元21建立辅助数组。该辅助数组设置单元21设置用于位图排序的辅助数组的大小。在本发明实施例中,辅助数组设置单元21可以将辅助数组的大小直接设置为系统可以提供的内存大小,也可以根据系统可以提供的内存大小以及数据元素中数据的范围来设置。当辅助数组设置单元21根据系统可以提供的内存大小以及数据元素中数据的范围来设置辅助数组的大小时,该辅助数组设置单元包括第一极值查找模块211和数组大小设置模块212。
其中第一极值查找模块211查找数据序列包括的数据元素的最大值Maxnum和最小值Minnum,并计算数据元素的最大值和最小值之差SIZE1为:SIZE1=Maxnum-Minnum;数组大小设置模块212获取系统可以提供的内存大小SIZE2,并将SIZE1和SIZE2中较小的一个设置为辅助数组的大小SIZE。
空间大小判断单元22判断辅助数组是否足够存储数据序列。在本发明实施例中,辅助数组存储数据序列的格式如下:下标为M的元素表示数据M有多少个。根据辅助数组的存储形式可知,当数据序列中数据元素的最大值和最小值之差加1小于或者等于辅助数组的大小时,该辅助数组足以存储数据序列,否则辅助数组不足以存储数据序列。因此,空间大小判断单元22在判断辅助数组是否足够存储数据序列时,直接将数据序列包括的数据元素的最大值Maxnum与最小值Minnum之差加1的值与预先设置的辅助数组的大小SIZE进行比较,即将Maxnum-Minnum+1与SIZE进行比较,当Maxnum-Minnum+1小于或等于SIZE时,则判定辅助数组足以存储数据序列,否则判定辅助数组不足以存储数据序列。
快速排序分组单元23在空间大小判断单元22判定辅助数组不足以存储数据序列时,采用快速排序法对数据序列进行分组,将数据序列分成多个分组数据。该快速排序分组单元23包括基准数据确定模块231和数据分组模块232。
其中基准数据确定模块231从数据序列中任意选定一个数据元素作为基准数据;数据分组模块232将数据序列中小于基准数据的数据元素排在基准数据的正向,将数据序列中大于基准数据的数据元素排在基准数据的反向,从而形成小于基准数据的分组数据、包括基准数据的分组数据和大于基准数据的分组数据。其中基准数据的正向和反向可以分别指基准数据的左方和右方,或者指基准数据的右方和左方。
此时,空间大小判断单元22还用于判断辅助数组是否足够存储分组数据。该空间大小判断单元22包括第二极值查找模块221、大小判断模块222。其中第二极值查找模块221查找分组数据的最大值和最小值,并计算分组数据的最大值和最小值之差加1的值;大小判断模块222将第二极值查找模块221计算得到的分组数据的最大值和最小值之差加1的值与辅助数组设置单元21设置的辅助数组的大小值进行比较,当分组数据的最大值和最小值之差加1的值小于或者等于辅助数组的大小值时,空间大小判断单元22判定辅助数组足以存储分组数据,否则判定辅助数组不足以存储分组数据。
由于针对每个分组数据,均要查找该分组数据中的最大值和最小值,从而增加了该排序方法的时间复杂度。为了加快该排序方法的排序速度,在本发明另一实施例中,第二极值查找模块221可以由最小值确定模块223、最大值确定模块224替换。
其中最小值确定模块223将与分组数据正向临近的基准数据确定为分组数据的最小值,或者将数据序列中数据元素的最小值确定为分组数据的最小值。在本发明实施例中,当存在与分组数据正向临近的基准数据时,则最小值确定模块223将与分组数据正向临近的基准数据作为分组数据的最小值,否则将数据元素的最小值确定为分组数据的最小值。
最大值确定模块224将与分组数据反向临近的基准数据确定为分组数据的最大值,或者将数据序列中数据元素的最大值确定为分组数据的最大值。在本发明实施例中,当存在与分组数据反向临近的基准数据时,则最大值确定模块224将与分组数据反向临近的基准数据确定为分组数据的最大值,否则将数据序列中数据元素的最大值作为分组数据的最大值。
当空间大小判断单元22判定辅助数组不足以存储分组数据时,快速排序分组单元23还用于采用快速排序法对分组数据进行分组,将分组数据再分成多个分组数据。
位图排序单元24在空间大小判断单元22判定辅助数组足以存储数据序列,或者辅助数组足以存储分组数据时,对数据序列或者分组数据进行位图排序。
在本发明实施例中,当辅助数组足以存储数据序列时,对数据序列进行位图排序,否则采用快速排序法将数据序列分成多个数据分组,当辅助数据足以存储分组数据时,对分组数据进行位图排序,否则继续采用快速排序法将分组数据分成多个新的数据分组,直至数据序列排序完毕,本发明实施例将位图排序和快速排序进行结合,通过快速排序对数据序列或者分组数据进行分组,使分组数据内的数据元素逐渐趋于紧凑和有序,再通过对分组数据进行位图排序,从而提高了数据排序方法的性能。对于稀疏数据,由于对可以进行位图排序的分组数据进行位图排序,从而不会降低快速排序的性能,最坏情况下退化为快速排序法;对于稠密数据,在不能直接使用位图排序时,可以通过快速排序对分组数据后,再进行位图排序,从而提高了数据排序的效率。同时通过将对应的基准数据作为分组数据的最大值和最小值,从而在采用快速排序进行分组时,可以快速界定分组数据的范围,从而节省了查找分组数据的最大值和最小值的时间,进一步提高了数据排序的性能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (11)

1、一种计算机系统中的数据处理方法,其特征在于,所述方法包括:
(1)所述计算机系统建立一个辅助数组;
(2)所述计算机系统判断所述辅助数组是否足以存储数据序列,若是,则对所述数据序列进行位图排序;若否,则采用快速排序将所述数据分成多个分组数据;
(3)所述计算机系统判断所述辅助数组是否足以存储所述分组数据,若是,则对所述分组数据进行位图排序;若否,则采用快速排序将所述分组数据进一步分成多个新的分组数据;
(4)重复执行步骤(3),直至所述辅助数组足以存储分组数据。
2、如权利要求1所述的方法,其特征在于,所述辅助数组的存储空间大小为所述计算机系统可提供的内存的大小。
3、如权利要求1所述的方法,其特征在于,所述步骤(1)包括:
查找所述数据序列包括的数据元素的最大值和最小值,并计算数据元素的最大值和最小值之差;
获取系统可提供的内存大小,并将所述辅助数组的大小设置为所述数据元素的最大值和最小值之差与所述内存大小中较小的一个值。
4、如权利要求1所述的方法,其特征在于,所述步骤(3)中采用快速排序将所述分组数据进一步分成多个新的分组数据的步骤包括:
从所述分组数据中选择一个数据元素作为基准数据;
将所述分组数据中小于基准数据的数据元素排在基准数据的正向,将所述分组数据中大于基准数据的数据元素排在基准数据的反向,以将所述分组数据分成小于基准数据的分组数据、包括基准数据的分组数据、以及大于基准数据的分组数据。
5、如权利要求4所述的方法,其特征在于,所述步骤(3)中判断预设的辅助数组是否足以存储分组数据的步骤包括:
当存在与分组数据正向临近的基准数据时,将与分组数据正向临近的基准数据确定为分组数据的最小值,否则将数据序列中数据元素的最小值确定为分组数据的最小值;
当存在与分组数据反向临近的基准数据时,将与分组数据反向临近的基准数据确定为分组数据的最大值,否则将数据序列中数据元素的最大值作为分组数据的最大值;
将分组数据的最大值与最小值之差加1的值与所述辅助数组的大小进行比较,当分组数据的最大值与最小值之差加1的值小于或等于所述辅助数组的大小时,判定辅助数组足以存储分组数据,否则判定辅助数组不足以存储分组数据。
6、如权利要求1所述的方法,其特征在于,所述步骤(3)中判断预设的辅助数组是否足以存储分组数据的步骤进一步包括:
查找分组数据的最大值和最小值,并计算分组数据的最大值和最小值之差加1的值;
将分组数据的最大值与最小值之差加1的值与所述辅助数组的大小进行比较,当分组数据的最大值与最小值之差加1的值小于或等于所述辅助数组的大小时,则判定辅助数组足以存储分组数据,否则判定辅助数组不足以存储分组数据。
7、一种计算机系统中的数据处理系统,其特征在于,所述系统包括:
辅助数组设置单元,用于建立辅助数组;
空间大小判断单元,用于判断预设的辅助数组是否足以存储数据序列,或者判断所述辅助数组是否足以存储分组数据;
快速排序分组单元,用于在所述空间大小判断单元判定辅助数组不足以存储所述数据序列时,采用快速排序法对所述数据进行分组,将所述数据分成多个分组数据,或者在所述空间大小判断单元判定辅助数组不足以存储分组数据时,采用快速排序法对分组数据进行分组,将分组数据分成多个新的分组数据;
位图排序单元,用于在所述空间大小判断单元判定辅助数组足以存储所述数据序列时,对所述数据序列进行位图排序,或者在所述空间大小判断单元判定辅助数组足以存储分组数据时,对分组数据进行位图排序。
8、如权利要求7所述的系统,其特征在于,所述辅助数组设置单元将所述辅助数组的大小设置为系统可提供的内存的大小,或者所述辅助数组设置单元包括:
第一极值查找模块,用于查找所述数据序列包括的数据元素的最大值和最小值,并计算数据元素的最大值和最小值之差;
数组大小设置模块,用于获取系统可提供的内存大小,并将所述辅助数组的大小设置为所述数据元素的最大值和最小值之差与所述内存大小中较小的值。
9、如权利要求7所述系统,其特征在于,所述快速排序分组单元包括:
基准数据确定模块,用于从所述分组数据中选择一个数据元素作为基准数据;
数据分组模块,用于将所述分组数据中小于基准数据的数据排在基准数据的正向,将所述分组数据中大于基准数据的数据排在基准数据的反向,以将所述分组数据分成小于基准数据的分组数据、包括基准数据的分组数据、以及大于基准数据的分组数据。
10、如权利要求9所述系统,其特征在于,所述空间大小判断单元包括:
最小值确定模块,用于当存在与分组数据正向临近的基准数据时,将与分组数据正向临近的基准数据确定为分组数据的最小值,否则将数据序列中数据元素的最小值确定为分组数据的最小值;
最大值确定模块,用于当存在与分组数据反向临近的基准数据时,将与分组数据反向临近的基准数据确定为分组数据的最大值,否则将数据序列中数据元素的最大值作为分组数据的最大值;
大小判断模块,用于将分组数据的最大值与最小值之差加1的值与所述辅助数组的大小进行比较,当分组数据的最大值与最小值之差加1的值小于或等于所述辅助数组的大小时,则判定辅助数组足以存储分组数据,否则判定辅助数组不足以存储分组数据。
11、如权利要求7所述系统,其特征在于,所述空间大小判断单元包括:
第二极值查找模块,用于查找分组数据的最大值和最小值,并计算分组数据的最大值和最小值之差加1的值;
大小判断模块,用于将分组数据的最大值与最小值之差加1的值与所述辅助数组的大小进行比较,当分组数据的最大值与最小值之差加1的值小于或等于所述辅助数组的大小时,则判定辅助数组足以存储分组数据,否则判定辅助数组不足以存储分组数据。
CN2009101062165A 2009-03-20 2009-03-20 一种计算机系统中的数据处理方法和系统 Expired - Fee Related CN101510215B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101062165A CN101510215B (zh) 2009-03-20 2009-03-20 一种计算机系统中的数据处理方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101062165A CN101510215B (zh) 2009-03-20 2009-03-20 一种计算机系统中的数据处理方法和系统

Publications (2)

Publication Number Publication Date
CN101510215A true CN101510215A (zh) 2009-08-19
CN101510215B CN101510215B (zh) 2010-12-01

Family

ID=41002615

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101062165A Expired - Fee Related CN101510215B (zh) 2009-03-20 2009-03-20 一种计算机系统中的数据处理方法和系统

Country Status (1)

Country Link
CN (1) CN101510215B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105204944A (zh) * 2015-09-10 2015-12-30 浪潮集团有限公司 一种海量数据的处理方法及装置
CN108353208A (zh) * 2015-07-16 2018-07-31 构造数据有限责任公司 优化媒体指纹保持以提高系统资源利用率
CN109949378A (zh) * 2019-03-26 2019-06-28 中国科学院软件研究所 图像灰度值排序方法、装置、电子设备及计算机可读介质
CN110020954A (zh) * 2019-03-26 2019-07-16 阿里巴巴集团控股有限公司 一种收益分配方法、装置及计算机设备
CN111651693A (zh) * 2020-06-29 2020-09-11 腾讯科技(深圳)有限公司 数据展示方法、数据排序方法、装置、设备及介质
CN113794725A (zh) * 2021-09-14 2021-12-14 北京本地通科技有限公司 一种电数字数据传输方法及系统

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108353208A (zh) * 2015-07-16 2018-07-31 构造数据有限责任公司 优化媒体指纹保持以提高系统资源利用率
CN108353208B (zh) * 2015-07-16 2021-01-22 构造数据有限责任公司 优化媒体指纹保持以提高系统资源利用率
CN105204944A (zh) * 2015-09-10 2015-12-30 浪潮集团有限公司 一种海量数据的处理方法及装置
CN109949378A (zh) * 2019-03-26 2019-06-28 中国科学院软件研究所 图像灰度值排序方法、装置、电子设备及计算机可读介质
CN110020954A (zh) * 2019-03-26 2019-07-16 阿里巴巴集团控股有限公司 一种收益分配方法、装置及计算机设备
CN109949378B (zh) * 2019-03-26 2021-06-08 中国科学院软件研究所 图像灰度值排序方法、装置、电子设备及计算机可读介质
CN110020954B (zh) * 2019-03-26 2023-09-05 创新先进技术有限公司 一种收益分配方法、装置及计算机设备
CN111651693A (zh) * 2020-06-29 2020-09-11 腾讯科技(深圳)有限公司 数据展示方法、数据排序方法、装置、设备及介质
CN111651693B (zh) * 2020-06-29 2023-03-28 腾讯科技(深圳)有限公司 数据展示方法、数据排序方法、装置、设备及介质
CN113794725A (zh) * 2021-09-14 2021-12-14 北京本地通科技有限公司 一种电数字数据传输方法及系统

Also Published As

Publication number Publication date
CN101510215B (zh) 2010-12-01

Similar Documents

Publication Publication Date Title
CN101510215B (zh) 一种计算机系统中的数据处理方法和系统
CN103189867A (zh) 重复数据检索方法及设备
CN108897761A (zh) 一种聚簇存储方法及装置
CN112085644B (zh) 多列数据排序方法、装置、可读存储介质和电子设备
Awad et al. Dynamic graphs on the GPU
CN102999601A (zh) 一种文件排序的方法及多媒体终端
CN107506310A (zh) 一种地址查找、关键字存储方法及设备
CN102890719B (zh) 一种对车牌号进行模糊搜索的方法及装置
CN100476824C (zh) 存储元素的方法与系统及查找元素的方法与系统
Gottlieb et al. Complexity results for permuting data and other computations on parallel processors
CN105359142A (zh) 哈希连接方法、装置和数据库管理系统
CN101430741A (zh) 一种短序列映射方法及系统
CN106649385B (zh) 基于HBase数据库的数据排序方法和装置
CN110362577B (zh) 一种数据插入方法、装置、设备和储存介质
CN104424204B (zh) 索引机制合并方法、搜索方法、装置及设备
CN101520769B (zh) 一种数据处理的方法和系统
CN105335493B (zh) 一种分层过滤文档的方法及装置
Chand et al. Upgraded selection sort
CN103902686B (zh) 一种数据去重方法及装置
CN107807938A (zh) 一种数据表的处理方法及装置
CN104504126A (zh) 一种并行向量查表方法及装置
CN104537017B (zh) 一种基于路径的文件搜索方法及装置
Liu et al. A cost optimal parallel quicksorting and its implementation on a shared memory parallel computer
CN109669760A (zh) 虚拟化动态资源管理系统
CN105183518A (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
ASS Succession or assignment of patent right

Owner name: JUXIN(ZHUHAI) TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: JULI INTEGRATED CIRCUIT DESIGN CO., LTD.

Effective date: 20141215

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20141215

Address after: 519085, C, No. 1, No. four, 1 hi tech Zone, Tang Wan Town, Guangdong, Zhuhai

Patentee after: ACTIONS (ZHUHAI) TECHNOLOGY Co.,Ltd.

Address before: 519085 No. 1, unit 15, building 1, 1 Da Ha Road, Tang Wan Town, Guangdong, Zhuhai

Patentee before: Juli Integrated Circuit Design Co., Ltd.

CP01 Change in the name or title of a patent holder

Address after: 519085 High-tech Zone, Tangjiawan Town, Zhuhai City, Guangdong Province

Patentee after: ACTIONS TECHNOLOGY Co.,Ltd.

Address before: 519085 High-tech Zone, Tangjiawan Town, Zhuhai City, Guangdong Province

Patentee before: ACTIONS (ZHUHAI) TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101201

Termination date: 20200320

CF01 Termination of patent right due to non-payment of annual fee