專(zhuān)利名稱(chēng)::一種計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于計(jì)算機(jī)系統(tǒng)中的電數(shù)字?jǐn)?shù)據(jù)處理領(lǐng)域,尤其涉及一種計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理方法及系統(tǒng)。
背景技術(shù):
:現(xiàn)有的兩種典型的數(shù)據(jù)排序方法是快速排序法和位圖排序法。其中快速排序法的過(guò)程簡(jiǎn)述如下先從數(shù)據(jù)元素中選一個(gè)數(shù)據(jù)作為基準(zhǔn)數(shù)據(jù),并將數(shù)據(jù)元素中小于基準(zhǔn)數(shù)據(jù)的數(shù)據(jù)排在基準(zhǔn)數(shù)據(jù)的右方(也可以排在左方),將數(shù)據(jù)元素中大于基準(zhǔn)數(shù)據(jù)的數(shù)據(jù)排在基準(zhǔn)數(shù)據(jù)的左方(也可以排在右方),再對(duì)基準(zhǔn)數(shù)據(jù)左右兩邊的數(shù)據(jù)元素分別用同樣的方法處理,直到每一個(gè)數(shù)據(jù)元素的長(zhǎng)度為1,排序結(jié)束。快速排序法是一種平均性能最好的排序方法。但是快速排序法的效果依賴(lài)于數(shù)據(jù)的分布情況,如當(dāng)數(shù)據(jù)呈倒序排列時(shí),排序的性能達(dá)到最壞。位圖排序法是一種典型的空間換時(shí)間的方法,其通過(guò)開(kāi)辟輔助數(shù)組實(shí)現(xiàn)數(shù)據(jù)序列的排序,數(shù)組實(shí)際上就是一組相同數(shù)據(jù)類(lèi)型變量,既一組數(shù)據(jù)序列,在數(shù)據(jù)排序中就是一組排序序列。如果一個(gè)數(shù)組中的一個(gè)變量也是一個(gè)數(shù)組,就構(gòu)成了二維數(shù)組。用同樣的方法可以構(gòu)成多維數(shù)組。在使用數(shù)組以前需要定義一個(gè)數(shù)組,輔助數(shù)組則是在數(shù)據(jù)處理中起輔助作用設(shè)立的數(shù)組。當(dāng)數(shù)據(jù)比較稠密時(shí),位圖排序法可以達(dá)到較好的排序效果。雖然位圖排序不依賴(lài)于數(shù)據(jù)的分布,只要開(kāi)辟的輔助數(shù)組的空間足夠存儲(chǔ)數(shù)據(jù)元素,則可以較短時(shí)間內(nèi)將數(shù)據(jù)排好。但是由于位圖排序法需要開(kāi)辟輔助數(shù)組,且輔助數(shù)組的大小依賴(lài)于待排序的數(shù)據(jù)的范圍,當(dāng)待排序數(shù)據(jù)較稀疏,或待排序數(shù)據(jù)的范圍過(guò)大時(shí),由于難以開(kāi)辟出合適大小的輔助數(shù)據(jù),從而難以使用位圖排序法對(duì)數(shù)據(jù)進(jìn)行排序。其中數(shù)據(jù)稠密是指相鄰的數(shù)據(jù)大d、較接近,數(shù)據(jù)稀疏是指相鄰的數(shù)據(jù)大小相差較大。其中數(shù)據(jù)稠密和數(shù)據(jù)稀疏是相對(duì)的,沒(méi)有統(tǒng)一的標(biāo)準(zhǔn)。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理方法,旨在解決現(xiàn)有的數(shù)據(jù)處理方法由于依賴(lài)于數(shù)據(jù)的分布或者數(shù)據(jù)范圍過(guò)大而造成的數(shù)據(jù)排序效率低、性能差的問(wèn)題。本發(fā)明是這樣實(shí)現(xiàn)的,一種計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理方法,包括(1)所述計(jì)算機(jī)系統(tǒng)建立一個(gè)輔助數(shù)組;(2)判斷所述輔助數(shù)組是否足以存儲(chǔ)數(shù)據(jù)序列,若是,則對(duì)所述數(shù)據(jù)序列進(jìn)行位圖排序;若否,則采用快速排序?qū)⑺鰯?shù)據(jù)分成多個(gè)分組數(shù)據(jù);(3)判斷所述輔助數(shù)組是否足以存儲(chǔ)所述分組數(shù)據(jù),若是,則對(duì)所述分組數(shù)據(jù)進(jìn)行位圖排序;若否,則采用快速排序?qū)⑺龇纸M數(shù)據(jù)進(jìn)一步分成多個(gè)新的分組凄t據(jù),(4)重復(fù)執(zhí)行步驟(3),直至所述輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù)。進(jìn)一步的,所述采用快速排序?qū)⒎纸M數(shù)據(jù)分成多個(gè)分組數(shù)據(jù)的步驟具體為從所述分組數(shù)據(jù)中選擇一個(gè)數(shù)據(jù)作為基準(zhǔn)數(shù)據(jù);將所述分組數(shù)據(jù)中小于基準(zhǔn)數(shù)據(jù)的數(shù)據(jù)元素排在基準(zhǔn)數(shù)據(jù)的正向,將所述分組數(shù)據(jù)中大于基準(zhǔn)數(shù)據(jù)的數(shù)據(jù)元素排在基準(zhǔn)數(shù)據(jù)的反向,以將所述分組數(shù)據(jù)分成小于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)、包括基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)、以及大于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)。進(jìn)一步的,所述判斷預(yù)設(shè)的輔助數(shù)組是否足以存儲(chǔ)分組數(shù)據(jù)的步驟具體為當(dāng)存在與分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)時(shí),將與分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)確定為分組數(shù)據(jù)的最小值,否則將數(shù)據(jù)序列中數(shù)據(jù)元素的最小值確定為分組數(shù)據(jù)的最小值;當(dāng)存在與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)時(shí),將與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)確定為分組數(shù)據(jù)的最大值,否則將數(shù)據(jù)序列中數(shù)據(jù)元素的最大值作為分組數(shù)據(jù)的最大值;將分組數(shù)據(jù)的最大值與最小值之差加1的值與所述輔助數(shù)組的大小進(jìn)行比較,當(dāng)分組數(shù)據(jù)的最大值與最小值之差加1的值小于或等于所述輔助數(shù)組的大小時(shí),判定輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù),否則判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)。本發(fā)明的另一目的在于解決現(xiàn)有的數(shù)據(jù)處理方法由于依賴(lài)于數(shù)據(jù)的分布或者數(shù)據(jù)范圍過(guò)大而造成的數(shù)據(jù)排序效率低、性能差的問(wèn)題,從而提高數(shù)據(jù)排序的效率和性能。提供一種計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理系統(tǒng),所述系統(tǒng)包括輔助數(shù)組設(shè)置單元,用于建立輔助數(shù)組;空間大小判斷單元,用于判斷預(yù)設(shè)的輔助數(shù)組是否足以存儲(chǔ)數(shù)據(jù)序列,或者判斷所述輔助數(shù)組是否足以存儲(chǔ)分組數(shù)據(jù);快速排序分組單元,用于在所述空間大小判斷單元判定輔助數(shù)組不足以存儲(chǔ)所述數(shù)據(jù)序列時(shí),采用快速排序法對(duì)所述數(shù)據(jù)進(jìn)行分組,將所述數(shù)據(jù)分成多個(gè)分組數(shù)據(jù),或者在所述空間大小判斷單元判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)時(shí),采用快速排序法對(duì)分組數(shù)據(jù)進(jìn)行分組,將分組數(shù)據(jù)分成多個(gè)新的分組數(shù)據(jù);位圖排序單元,用于在所述空間大小判斷單元判定輔助數(shù)組足以存儲(chǔ)所述數(shù)據(jù)序列時(shí),對(duì)所述數(shù)據(jù)序列進(jìn)行位圖排序,或者在所述空間大小判斷單元判定輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù)時(shí),對(duì)分組數(shù)據(jù)進(jìn)行位圖排序。進(jìn)一步的,所述快速排序分組單元包括基準(zhǔn)數(shù)據(jù)確定模塊,用于從所述分組數(shù)據(jù)中選擇一個(gè)數(shù)據(jù)元素作為基準(zhǔn)數(shù)據(jù);數(shù)據(jù)分組模塊,用于將所述分組數(shù)據(jù)中小于基準(zhǔn)數(shù)據(jù)的數(shù)據(jù)排在基準(zhǔn)數(shù)據(jù)的正向,將所述分組數(shù)據(jù)中大于基準(zhǔn)數(shù)據(jù)的數(shù)據(jù)排在基準(zhǔn)數(shù)據(jù)的反向,以將所述分組數(shù)據(jù)分成小于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)、包括基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)、以及大于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)。進(jìn)一步的,所述空間大小判斷單元包括最大值確定模塊,用于當(dāng)存在與分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)時(shí),將與分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)確定為分組數(shù)據(jù)的最小值,否則將數(shù)據(jù)序列中數(shù)據(jù)元素的最小值確定為分組數(shù)據(jù)的最小值;最小值確定模塊,用于當(dāng)存在與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)時(shí),將與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)確定為分組數(shù)據(jù)的最大值,否則將數(shù)據(jù)序列中數(shù)據(jù)元素的最大值作為分組lt據(jù)的最大值;大小判斷才莫塊,用于將分組數(shù)據(jù)的最大值與最小值之差加1的值與所述輔助數(shù)組的大小進(jìn)行比較,當(dāng)分組數(shù)據(jù)的最大值與最小值之差加1的值小于或等于所述輔助數(shù)組的大小時(shí),則判定輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù),否則判定輔助數(shù)組不足以存儲(chǔ)分組l史據(jù)。在本發(fā)明實(shí)施例中,通過(guò)將位圖排序和快速排序進(jìn)行結(jié)合,通過(guò)快速排序?qū)?shù)據(jù)序列或者分組數(shù)據(jù)進(jìn)行分組,使分組數(shù)據(jù)內(nèi)的數(shù)據(jù)元素逐漸趨于緊湊和有序,再通過(guò)對(duì)分組數(shù)據(jù)進(jìn)行位圖排序,從而提高了數(shù)據(jù)排序方法的性能。對(duì)于稀疏數(shù)據(jù),由于對(duì)可以進(jìn)行位圖排序的分組數(shù)據(jù)進(jìn)行位圖排序,從而不會(huì)降低快速排序的性能,最壞情況下退化為快速排序法;對(duì)于稠密lt據(jù),在不能直接使用位圖排序時(shí),可以通過(guò)快速排序?qū)Ψ纸M數(shù)據(jù)后,再進(jìn)行位圖排序,從而提高了數(shù)據(jù)排序的效率。圖1是本發(fā)明實(shí)施例提供的數(shù)據(jù)排序方法的實(shí)現(xiàn)流程圖;圖2是本發(fā)明實(shí)施例提供的數(shù)據(jù)排序系統(tǒng)的結(jié)構(gòu)框圖。具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。在本發(fā)明實(shí)施例中,預(yù)先設(shè)置用于位圖排序的輔助數(shù)組的大小,當(dāng)輔助數(shù)組足夠存儲(chǔ)數(shù)據(jù)序列時(shí),對(duì)數(shù)據(jù)序列進(jìn)行位圖排序,否則采用快速排序法將數(shù)據(jù)序列分成多個(gè)分組數(shù)據(jù),當(dāng)輔助數(shù)組足夠存儲(chǔ)分組數(shù)據(jù)時(shí),對(duì)分組數(shù)據(jù)進(jìn)行位圖排序,否則繼續(xù)采用快速排序法將分組數(shù)據(jù)再分成多個(gè)分組數(shù)據(jù),直至數(shù)據(jù)序列排序完畢。圖1示出了本發(fā)明實(shí)施例提供的計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理方法的實(shí)現(xiàn)流程,詳述如下在步驟S101中,建立一個(gè)輔助數(shù)組。在實(shí)際應(yīng)用中,在預(yù)先設(shè)置用于位圖排序的輔助數(shù)組的大小時(shí),可以將輔助數(shù)組的大小設(shè)置為系統(tǒng)可以提供的內(nèi)存大小,也可以根據(jù)系統(tǒng)可以提供的內(nèi)存大小以及數(shù)據(jù)序列中數(shù)據(jù)元素的范圍來(lái)設(shè)置。當(dāng)根據(jù)系統(tǒng)可以提供的內(nèi)存大小以及數(shù)據(jù)序列中數(shù)據(jù)元素的范圍來(lái)設(shè)置時(shí),預(yù)先設(shè)置用于位圖排序的輔助數(shù)組的大小的步驟具體為查找數(shù)據(jù)序列中數(shù)據(jù)元素的最大值Maxnum和最小值Minnum,并計(jì)算數(shù)據(jù)元素的最大值和最小值之差SIZE1為SIZE1=Maxnum-Minnum。獲取系統(tǒng)可以提供的內(nèi)存大小SIZE2,并將SIZE1和SIZE2中較小的一個(gè)作為輔助數(shù)組的大小SIZE。在步驟S102中,判斷輔助數(shù)組是否足夠存儲(chǔ)數(shù)據(jù)序列,如果是,則執(zhí)行步驟S103,否則執(zhí)行步驟S104。在本發(fā)明實(shí)施例中,輔助數(shù)組存儲(chǔ)數(shù)據(jù)的格式如下下標(biāo)為M的元素表示數(shù)據(jù)M有多少個(gè)。如假設(shè)數(shù)據(jù)序列為1,2,2,2,3,5,則該數(shù)據(jù)序列在輔助數(shù)組中的存儲(chǔ)形式如下<table>tableseeoriginaldocumentpage10</column></row><table>輔助數(shù)組的上述存儲(chǔ)形式表示該數(shù)據(jù)序列中有一個(gè)1,三個(gè)2,—個(gè)3,零個(gè)4,一個(gè)5。另假設(shè)數(shù)據(jù)序列為1,1,2,2,2,3,5,則該凝:據(jù)序列在輔助數(shù)組中的存儲(chǔ)形式如下<table>tableseeoriginaldocumentpage11</column></row><table>輔助數(shù)組的上述存儲(chǔ)形式表示該數(shù)據(jù)序列中有兩個(gè)1,三個(gè)2,一個(gè)3,零個(gè)4,一個(gè)5。根據(jù)輔助數(shù)組的存儲(chǔ)形式可知,當(dāng)數(shù)據(jù)序列的最大值和最小值之差加1小于或者等于輔助凄t組的大小時(shí),該輔助數(shù)組足以存^f渚數(shù)據(jù)序列,否則輔助數(shù)組不足以存儲(chǔ)數(shù)據(jù)序列。因此,在判斷輔助數(shù)組是否足夠存儲(chǔ)數(shù)據(jù)序列時(shí),直接將數(shù)據(jù)序列包括的數(shù)據(jù)元素的最大值與最小值之差加1的值與預(yù)先設(shè)置的輔助數(shù)組的大小SIZE進(jìn)行比較,即將Maxnum-Minnum+1與SIZE進(jìn)行比較,當(dāng)Maxnum-Minnum+1小于或等于SIZE時(shí),則判定輔助數(shù)組足以存儲(chǔ)數(shù)據(jù)序列,否則判定輔助數(shù)組不足以存儲(chǔ)數(shù)據(jù)序列。在步驟S103中,對(duì)所述數(shù)據(jù)序列進(jìn)行位圖排序。由于位圖排序的具體過(guò)程屬于現(xiàn)有技術(shù),此處不再贅迷。由于只包括一個(gè)數(shù)據(jù)元素的數(shù)據(jù)序列已經(jīng)是有序的,無(wú)須再對(duì)該數(shù)據(jù)序列進(jìn)行排序,因此,在本發(fā)明實(shí)施例中,當(dāng)數(shù)據(jù)序列包括的數(shù)據(jù)元素只有一個(gè)時(shí),則無(wú)需對(duì)該數(shù)據(jù)序列進(jìn)行位圖排序。在步驟S104中,采用快速排序法對(duì)數(shù)據(jù)序列進(jìn)行分組,將數(shù)據(jù)序列分成多個(gè)分組數(shù)據(jù)。其具體步驟如下從數(shù)據(jù)D序列中任意選定一個(gè)數(shù)據(jù)B作為基準(zhǔn)數(shù)據(jù),將數(shù)據(jù)序列D中小于B的數(shù)據(jù)元素排在B的正向,將數(shù)據(jù)序列D中大于B的數(shù)據(jù)元素排在B的反向,從而將數(shù)據(jù)序列D分成三組,分別為小于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)DL、包括基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)B、以及大于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)DR。其中基準(zhǔn)數(shù)據(jù)的正向和反向可以分別指基準(zhǔn)數(shù)據(jù)的左方和右方,或者指基準(zhǔn)數(shù)據(jù)的右方和左方。在步驟S105中,針對(duì)每個(gè)分組數(shù)據(jù),判斷輔助數(shù)組是否足夠存儲(chǔ)該分組數(shù)據(jù),如果否,則4丸行步驟S106,否則,執(zhí)行步驟S107。在本發(fā)明實(shí)施例中,針對(duì)每個(gè)分組數(shù)據(jù),判斷輔助數(shù)組是否足夠存儲(chǔ)該分組數(shù)據(jù)的步驟具體為針對(duì)每個(gè)分組數(shù)據(jù),查找該分組數(shù)據(jù)的最大值和最小值,再將該最大值與最小值之差加1后的值與為輔助^t組分配的內(nèi)存空間的大小SIZE進(jìn)行比較,如果最大值與最小值之差加1后的值小于或者等于SIZE,則判定輔助數(shù)組的空間足以存儲(chǔ)該分組數(shù)據(jù)中的數(shù)據(jù)元素,否則判定輔助數(shù)組的空間不足以存儲(chǔ)該該分組數(shù)據(jù)中的數(shù)據(jù)元素。由于針對(duì)每個(gè)分組數(shù)據(jù),均要查找該分組數(shù)據(jù)中的最大值和最小值,從而增加了該排序方法的時(shí)間復(fù)雜度。為了加快該排序方法的排序速度,在本發(fā)明另一實(shí)施例中,當(dāng)存在與分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)時(shí),將與該分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)作為該分組數(shù)據(jù)的最小值,否則將數(shù)據(jù)序列中數(shù)據(jù)元素的最小值確定為分組數(shù)據(jù)的最小值。當(dāng)存在與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)時(shí),將與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)確定為分組數(shù)據(jù)的最大值,否則將數(shù)據(jù)序列中數(shù)據(jù)元素的最大值作為分組數(shù)據(jù)的最大值。如在采用快速排序法對(duì)數(shù)據(jù)D進(jìn)行分組時(shí),選擇基準(zhǔn)數(shù)據(jù)為B,從而將數(shù)據(jù)元素分成小于基準(zhǔn)數(shù)據(jù)B的分組數(shù)據(jù)BL、包括基準(zhǔn)數(shù)據(jù)B的分組數(shù)據(jù)B、以及大于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)BR。此時(shí),將基準(zhǔn)數(shù)據(jù)B作為分組數(shù)據(jù)BL的最大值,將數(shù)據(jù)序列中數(shù)據(jù)元素的最小值Minnum作為分組數(shù)據(jù)BL的最小值;同時(shí)將基準(zhǔn)數(shù)據(jù)B作為分組數(shù)據(jù)BR的最小值,將數(shù)據(jù)序列中數(shù)據(jù)元素的最大值Maxnum作為分組凄t據(jù)BR的最大值。因此,此時(shí),分組數(shù)據(jù)BL的最大值與最小值之差為B-Minnum,分組數(shù)據(jù)BR的最大值與最小值之差為Maxmim-B。此時(shí),在針對(duì)每個(gè)分組數(shù)據(jù),判斷輔助數(shù)組的空間是否足夠存儲(chǔ)該分組數(shù)據(jù)中的數(shù)據(jù)元素的步驟具體為將B-Minnum+1的值與為輔助數(shù)組分配的內(nèi)存空間的大小值SIZE進(jìn)行比較,當(dāng)B-Minnum+1小于或者等于SIZE時(shí),判定輔助數(shù)組的空間足以存儲(chǔ)分組數(shù)據(jù)BL中的數(shù)據(jù)元素,否則判定輔助數(shù)組的空間不足以存儲(chǔ)分組數(shù)據(jù)BL中的數(shù)據(jù)元素。將Maxnum-B+1的值與為輔助數(shù)組分配的內(nèi)存空間的大小值SIZE進(jìn)行比較,當(dāng)Maxnum-B+1的值小于或者等于SIZE時(shí),判定輔助數(shù)組的空間足以存儲(chǔ)分組數(shù)據(jù)BR中的數(shù)據(jù)元素,否則判定輔助數(shù)組的空間不足以存儲(chǔ)分組數(shù)據(jù)BR中的數(shù)據(jù)元素。在步驟S106中,采用快速排序法對(duì)分組數(shù)據(jù)進(jìn)行分組,將分組數(shù)據(jù)進(jìn)一步分成多個(gè)新的分組數(shù)據(jù)后,執(zhí)行步驟S105。在步驟S107中,對(duì)分組數(shù)據(jù)進(jìn)行位圖排序。在本發(fā)明實(shí)施例中,當(dāng)分組數(shù)據(jù)只包括一個(gè)數(shù)據(jù)元素時(shí),則無(wú)需再對(duì)該分組數(shù)據(jù)中的數(shù)據(jù)元素進(jìn)行位圖排序。通過(guò)以上步驟的描述,實(shí)質(zhì)上本技術(shù)方案可以歸結(jié)為如下的步驟(1)所述計(jì)算機(jī)系統(tǒng)建立一個(gè)輔助數(shù)組;(2)所述計(jì)算機(jī)系統(tǒng)判斷所述輔助數(shù)組是否足以存儲(chǔ)所述數(shù)據(jù)序列,若是,則對(duì)所述數(shù)據(jù)序列進(jìn)行位圖排序;若否,則采用快速排序?qū)⑺鰯?shù)據(jù)序列分成多個(gè)分組數(shù)據(jù);(3)所述計(jì)算機(jī)系統(tǒng)判斷所述輔助數(shù)組是否足以存儲(chǔ)所述分組數(shù)據(jù),若是,則對(duì)所述分組數(shù)據(jù)進(jìn)行位圖排序;若否,則采用快速排序?qū)⑺龇纸M數(shù)據(jù)進(jìn)一步分成多個(gè)新的分組數(shù)據(jù),(4)重復(fù)執(zhí)行步驟(3),直至所述輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù)。經(jīng)過(guò)上述排序步驟后,即可對(duì)數(shù)據(jù)序列進(jìn)行排序。本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法結(jié)合了快速排序法和位圖排序法的優(yōu)點(diǎn),在處理數(shù)據(jù)序列,尤其是比較稠密的數(shù)據(jù)序列時(shí),可以明顯提高數(shù)據(jù)排序的性能。通過(guò)快速排序法對(duì)數(shù)據(jù)序列進(jìn)行分組,從而使分組數(shù)據(jù)趨于緊湊和有序,再采用位圖排序法對(duì)分組數(shù)據(jù)進(jìn)行排序,從而有效的提高了數(shù)據(jù)排序方法的性能。該排序方法可以在不影響快速排序法的性能的情況下,通過(guò)采用位圖排序法提高數(shù)據(jù)排序的性能。以下以一個(gè)具體的示例,對(duì)本發(fā)明實(shí)施例-提供的教:據(jù)處理方法進(jìn)行進(jìn)一步的說(shuō)明,假設(shè)數(shù)據(jù)序列D中的數(shù)據(jù)元素分別為為9,7,10,12,8,6,5,4,1005,且假設(shè)系統(tǒng)可以為位圖排序的輔助數(shù)組提供的內(nèi)存大小SIZE2為6個(gè)整數(shù)的大小,即SIZE2二6。1、設(shè)置用于位圖排序的輔助數(shù)組的大小SIZE。查找數(shù)據(jù)序列中數(shù)據(jù)元素的最大值Maxnum和最小值Minnum,得到Maxnum=1005,Minnum=4,則數(shù)據(jù)元素的最大值與最小值之差SIZE1為SIZEl=Maxnum-Minnum=1005-4=1001,由于SIZE2〈SIZE1,因此,將輔助數(shù)組的大小SIZE設(shè)置為SIZE=SIZE1=6。2、判斷輔助數(shù)組是否足夠存儲(chǔ)數(shù)據(jù)序列。由于Maxnum-Minnum+l-1005-4+l=1002>SIZE,因此,判定輔助數(shù)組不足以存儲(chǔ)數(shù)據(jù)序列,從而不能對(duì)數(shù)據(jù)序列進(jìn)行位圖排序,需要采用快速排序法對(duì)數(shù)據(jù)序列D進(jìn)行第一次分組,其具體步驟如下取數(shù)據(jù)序列D的第一個(gè)數(shù)據(jù)元素9作為基準(zhǔn)數(shù)據(jù),將數(shù)據(jù)序列D中小于9的數(shù)據(jù)元素排在9的左方,將數(shù)據(jù)序列D中大于9的數(shù)據(jù)元素排在9的右方,將數(shù)據(jù)序列分成小于9的分組數(shù)據(jù)DL、包括基準(zhǔn)數(shù)據(jù)9的分組數(shù)據(jù)B、以及大于9的分組數(shù)據(jù)DR。分組后的數(shù)據(jù)D如下<table>tableseeoriginaldocumentpage14</column></row><table>3、針對(duì)每個(gè)分組數(shù)據(jù),判斷輔助數(shù)組是否足夠存儲(chǔ)該分組數(shù)據(jù)中的數(shù)據(jù)元素。對(duì)于分組數(shù)據(jù)DL,其最大值為第一次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B,其值為9,最小值為數(shù)據(jù)D的最小值4,由于分組數(shù)據(jù)DL的最大值與最小值之差加1后的值9-4+l=6=SIZE,因此,判定輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù)DL,所以,對(duì)分組數(shù)據(jù)DL進(jìn)行位圖排序,排序后的數(shù)據(jù)D如下所示<table>tableseeoriginaldocumentpage14</column></row><table>對(duì)于分組數(shù)據(jù)DR,其最小值為第一次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B,其值為9,最大值為數(shù)據(jù)D的最大值Maxnum,其值為1005,由于分組數(shù)據(jù)DR的最大值與最小值之差加1后的值1005-9+l=997>SIZE,因此,判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)DR,不能對(duì)分組數(shù)據(jù)DR進(jìn)行位圖排序,需要采用快速排序法對(duì)分組數(shù)據(jù)DR中的數(shù)據(jù)元素進(jìn)行第二次分組,其具體過(guò)程如下取分組數(shù)據(jù)DR中的第一個(gè)數(shù)據(jù)元素12作為基準(zhǔn)數(shù)據(jù),將分組數(shù)據(jù)DR中小于12的數(shù)據(jù)元素排在12的左方,將分組數(shù)據(jù)DR中大于12的數(shù)據(jù)元素排在12的右方,從而將分組數(shù)據(jù)DR分成小于12的分組數(shù)據(jù)DL1、包括基準(zhǔn)數(shù)據(jù)12的分組數(shù)據(jù)B1、以及大于12的分組數(shù)據(jù)DR1。分組后的數(shù)據(jù)D如下<table>tableseeoriginaldocumentpage15</column></row><table>4、針對(duì)每個(gè)分組數(shù)據(jù),判斷輔助數(shù)組是否足夠存儲(chǔ)該分組數(shù)據(jù)中的數(shù)據(jù)元素。對(duì)千分組數(shù)據(jù)DLl,其只包括一個(gè)數(shù)據(jù)元素10,由于只包括一個(gè)數(shù)據(jù)元素的分組數(shù)據(jù)已經(jīng)是有序的,無(wú)須再對(duì)分組數(shù)據(jù)DL1進(jìn)行排序。對(duì)于分組數(shù)據(jù)DR1,其也只包括一個(gè)數(shù)據(jù)元素1005,由于只包括一個(gè)數(shù)據(jù)元素的分組數(shù)據(jù)已經(jīng)是有序的,無(wú)須再對(duì)分組數(shù)據(jù)DR1進(jìn)行排序。經(jīng)上迷排序步驟后,即可得到數(shù)據(jù)序列D的序列如下<table>tableseeoriginaldocumentpage15</column></row><table>的說(shuō)明,假設(shè)凄史據(jù)序列D為21,23,22,5006,5004,5009,24,23,22,5009,5010,5011,21,19,23,6008,且假設(shè)系統(tǒng)可以為位圖排序的輔助數(shù)組提供的內(nèi)存大小SIZE2為6個(gè)整數(shù)的大小,即SIZE2=6。1、設(shè)置用于位圖排序的輔助數(shù)組的大小SIZE。查找數(shù)據(jù)序列D中的最大值Maxnum和最小值Minnum,得到Maxnum=6008,Minnum=19,則數(shù)據(jù)序列D的最大值與最小值之差SIZE1為SIZEl=Maxmim-Minnum=6008-I9-5989,由于SIZE2<SIZE1,因此,將輔助數(shù)組的大小SIZE設(shè)置為SIZE-SIZE1=6。2、判斷輔助數(shù)組是否足夠存儲(chǔ)數(shù)據(jù)序列D。由于Maxnum-Minnum+l=6008-19+i-5990>SIZE,因此,判定輔助數(shù)組不足以存儲(chǔ)數(shù)據(jù)序列D,,人而不能對(duì)數(shù)據(jù)序列D進(jìn)行位圖排序,需要采用快速排序法對(duì)數(shù)據(jù)序列D進(jìn)行第一次分組,其具體過(guò)程如下取數(shù)據(jù)序列D的第一個(gè)數(shù)據(jù)元素21作為基準(zhǔn)數(shù)據(jù),將數(shù)據(jù)序列D中小于21的數(shù)據(jù)元素排在21的左方,將數(shù)據(jù)序列D中大于21的數(shù)據(jù)元素排在21的右方,將數(shù)據(jù)序列分成小于21的分組數(shù)據(jù)DL、包括基準(zhǔn)數(shù)據(jù)21的分組數(shù)據(jù)B、以及大于21的分組數(shù)據(jù)DR。分組后的數(shù)據(jù)D如下<table>tableseeoriginaldocumentpage16</column></row><table>3、針對(duì)每個(gè)分組數(shù)據(jù),判斷輔助數(shù)組是否足夠存儲(chǔ)該分組數(shù)據(jù)中的數(shù)據(jù)元素。對(duì)于分組數(shù)據(jù)DL,其只包括一個(gè)數(shù)據(jù)元素19,由于只包括一個(gè)數(shù)據(jù)元素的分組數(shù)據(jù)已經(jīng)是有序的,無(wú)須再對(duì)該分組數(shù)據(jù)DL進(jìn)行排序。對(duì)于分組數(shù)據(jù)DR,其最小值為第一次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B,其值為21,最大值為數(shù)據(jù)D的最大值Maxnum,其值為6008,由于分組數(shù)據(jù)DR的最大值與最小值之差加1后的值6008-21+l=5988>SIZE,因此,判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)DR,不能對(duì)分組數(shù)據(jù)DR進(jìn)行位圖排序,需要采用快速排序法對(duì)分組數(shù)據(jù)DR中的數(shù)據(jù)元素進(jìn)行第二次分組,其具體步驟如下取分組數(shù)據(jù)DR中的第一個(gè)數(shù)據(jù)元素22作為基準(zhǔn)數(shù)據(jù),將分組數(shù)據(jù)DR中小于22的數(shù)據(jù)元素排在22的左方,將分組數(shù)據(jù)DR中大于22的數(shù)據(jù)元素排在12的右方,從而將分組數(shù)據(jù)DR分成小于22的分組數(shù)據(jù)DL1、等于22的分組數(shù)據(jù)B1、以及大于22的分組數(shù)據(jù)DR1。分組后的數(shù)據(jù)D如下<table>tableseeoriginaldocumentpage16</column></row><table>4、針對(duì)每個(gè)新的分組數(shù)據(jù),判斷輔助數(shù)組是否足夠存儲(chǔ)該分組數(shù)據(jù)中的數(shù)據(jù)元素。對(duì)于分組數(shù)據(jù)DLl,其只包括一個(gè)數(shù)據(jù)元素21,由于只包括一個(gè)數(shù)據(jù)元素的分組數(shù)據(jù)已經(jīng)是有序的,無(wú)須再對(duì)該分組數(shù)據(jù)DL1進(jìn)行排序。對(duì)于分組數(shù)據(jù)DR1,其最小值為第二次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B1,其值為22,其最大值為數(shù)據(jù)D的最大值Maxnum,其值為6008,由于分組數(shù)據(jù)DR1的最大值與最小值之差加1后的值6008-22+l=5987>SIZE,因此,判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)DRl,不能對(duì)分組數(shù)據(jù)DR1進(jìn)行位圖排序,需要采用快速排序法對(duì)分組數(shù)據(jù)DR1中的數(shù)據(jù)元素進(jìn)行第三次分組,其具體步驟如下取分組數(shù)據(jù)DR1中的笫一個(gè)數(shù)據(jù)元素5004作為基準(zhǔn)數(shù)據(jù),將分組數(shù)據(jù)DR1中小于5004的數(shù)據(jù)元素排在5004的左方,將分組l丈據(jù)DR1中大于5004的數(shù)據(jù)元素排在5004的右方,從而將分組數(shù)據(jù)DR1分成小于5004的分組數(shù)據(jù)DL2、包括基準(zhǔn)數(shù)據(jù)5004的分組數(shù)據(jù)B2、以及大于5004的分組數(shù)據(jù)DR2。分組后的數(shù)據(jù)D如下<table>tableseeoriginaldocumentpage17</column></row><table>5、針對(duì)每個(gè)新的分組數(shù)據(jù),判斷輔助數(shù)組是否足夠存儲(chǔ)該分組數(shù)據(jù)中的數(shù)據(jù)元素。對(duì)于分組數(shù)據(jù)DL2,其最大值為第三次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B2,其值為5004,最小值為第二次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B1,其值為22,由于分組數(shù)據(jù)DL2的最大值與最小值之差加1后的值5004-22+1=4983>SIZE,因此,判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)DL2,所以,不能對(duì)分組數(shù)據(jù)DL2進(jìn)行位圖排序,需要采用快速排序法對(duì)分組數(shù)據(jù)DL2中的數(shù)據(jù)元素進(jìn)行第四次分組。其具體過(guò)程如下取分組數(shù)據(jù)DL2中的第一個(gè)數(shù)據(jù)元素23作為基準(zhǔn)數(shù)據(jù),將分組數(shù)據(jù)DL2中小于23的數(shù)據(jù)元素排在23的左方,將分組數(shù)據(jù)DL2中大于23的數(shù)據(jù)元素排在23的右方,從而將分組數(shù)據(jù)DL2分成小于23的分組數(shù)據(jù)DL3、包括基準(zhǔn)數(shù)據(jù)23的分組數(shù)據(jù)B3、以及大于23的分組數(shù)據(jù)DR3。分組后的數(shù)據(jù)D如下<table>tableseeoriginaldocumentpage17</column></row><table>對(duì)于分組數(shù)據(jù)DR2,其最小值為第三次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B2,其值為5004,最大值為數(shù)據(jù)序列D的最大值Maxnum,其值為6008,由于分組數(shù)據(jù)DR2的最大值與最小值之差加1后的值6008-5004+l=1005>SIZE,因此,判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)DR2,所以,不能對(duì)分組數(shù)據(jù)DR2進(jìn)行位圖排序,需要采用快速排序法對(duì)分組數(shù)據(jù)DR2中的數(shù)據(jù)元素也進(jìn)行第四次分組。其具體過(guò)程如下取分組數(shù)據(jù)DR2中的第一個(gè)數(shù)據(jù)元素5010作為基準(zhǔn)數(shù)據(jù),將分組數(shù)據(jù)DR2中小于5010的數(shù)據(jù)元素排在5010的左方,將分組數(shù)據(jù)DR2中大于5010的數(shù)據(jù)元素排在5010的右方,/人而將分組數(shù)據(jù)DR2分成小于5010的分組數(shù)據(jù)DL3,、包括基準(zhǔn)數(shù)據(jù)5010的分組數(shù)據(jù)B3'、以及大于5010的分組數(shù)據(jù)DR3'。分組后的數(shù)據(jù)D如下<table>tableseeoriginaldocumentpage18</column></row><table>7、針對(duì)每個(gè)新的分組數(shù)據(jù),判斷輔助數(shù)組是否足夠存儲(chǔ)該分組數(shù)據(jù)中的數(shù)據(jù)元素。對(duì)于分組數(shù)據(jù)DL3,其最大值為第四次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B3,其值為23,最小值為第二次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)Bl,其值為22,由于分組數(shù)據(jù)DL3的最大值與最小值之差加1后的值23-22+l=2<SIZE,因此,判定輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù)DL3,所以,對(duì)分組數(shù)據(jù)DL3進(jìn)行位圖排序,排序后的數(shù)據(jù)D如下所示<table>tableseeoriginaldocumentpage18</column></row><table>對(duì)于分組數(shù)據(jù)DR3,其最大值為第三次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B2,其值為5004,最小值為第四次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B3,其值為23,由于分組數(shù)據(jù)DR3的最大值與最小值之差加1后的值5004-23+l=4982>SIZE,因此,判定輔助數(shù)組的空間不足以存儲(chǔ)分組數(shù)據(jù)DR3,所以,不能對(duì)分組數(shù)據(jù)DR3進(jìn)行位圖排序,需要采用快速排序法對(duì)分組數(shù)據(jù)DR3中的數(shù)據(jù)元素進(jìn)行第五次分組。其具體過(guò)程如下取分組數(shù)據(jù)DR3中的第一個(gè)數(shù)據(jù)元素24作為基準(zhǔn)數(shù)據(jù),將分組數(shù)據(jù)DR3中小于24的數(shù)據(jù)元素排在24的左方,將分組數(shù)據(jù)DR3中大于24的數(shù)據(jù)元素排在24的右方,從而將分組數(shù)據(jù)DR3分成小于24的分組數(shù)據(jù)DL4、包括基準(zhǔn)數(shù)據(jù)24的分組數(shù)據(jù)B4、以及大于24的分組lt據(jù)DR4。分組后的數(shù)據(jù)D如下<table>tableseeoriginaldocumentpage19</column></row><table>對(duì)于分組數(shù)據(jù)DL3,,其最大值為第四次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B3',其值為5010,最小值為第三次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B2,其值為5004,由于分組數(shù)據(jù)DL3,的最大值與最小值之差加1后的值5010-5004+1=7>SIZE,因此,判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)DL3',所以,不能對(duì)分組數(shù)據(jù)DL3,進(jìn)行位圖排序,需要采用快速排序法對(duì)分組數(shù)據(jù)DL3,中的數(shù)據(jù)元素進(jìn)行分組。其具體過(guò)程如下取分組數(shù)據(jù)DL3,中的第一個(gè)數(shù)據(jù)元素5006作為基準(zhǔn)數(shù)據(jù),將分組數(shù)據(jù)DL3,中小于5006的數(shù)據(jù)元素排在5006的左方,將分組數(shù)據(jù)DL3,中大于5006的數(shù)據(jù)元素排在5006的右方,從而將分組數(shù)據(jù)DL3,分成小于5006的分組數(shù)據(jù)DL4,、包括基準(zhǔn)數(shù)據(jù)5006的分組數(shù)據(jù)B4'、以及大于5006的分組數(shù)據(jù)DR4'。分組后的數(shù)據(jù)D如下<table>tableseeoriginaldocumentpage19</column></row><table>對(duì)于分組數(shù)據(jù)DR3',其最小值為第四次快速排序分組的基準(zhǔn)數(shù)據(jù)B3',其值為5010,其最大值為數(shù)據(jù)序列中數(shù)據(jù)元素的最大值Maxnum,其值為6008,由于分組數(shù)據(jù)DR3,的最大值與最小值之差加1后的值6008-5010+1=999>SIZE,因此,判定輔助數(shù)據(jù)的空間不足以存儲(chǔ)數(shù)據(jù)DR3,,所以,不能對(duì)分組數(shù)據(jù)DR3,進(jìn)行位圖排序,需要采用快速排序法對(duì)分組數(shù)據(jù)DR3,中的數(shù)據(jù)元素也進(jìn)行第五次分組。其具體過(guò)程如下取分組數(shù)據(jù)DR3,中的第一個(gè)數(shù)據(jù)元素5011作為基準(zhǔn)數(shù)據(jù),將分組數(shù)據(jù)DR3,中小于5011的數(shù)據(jù)元素排在5011的左方,將分組數(shù)據(jù)DR3,中大于5011的數(shù)據(jù)元素排在5011的右方,從而將分組數(shù)據(jù)DR3,分成小于5011的分組數(shù)據(jù)DL4"、包括基準(zhǔn)數(shù)據(jù)5011的分組數(shù)據(jù)B4"、以及大于5011的分組數(shù)據(jù)DR4"。分組后的數(shù)據(jù)D如下<table>tableseeoriginaldocumentpage20</column></row><table>8、針對(duì)每個(gè)新的分組數(shù)據(jù),判斷輔助數(shù)組的空間是否足夠存儲(chǔ)該分組數(shù)據(jù)中的數(shù)據(jù)元素。對(duì)于分組數(shù)據(jù)DL4,其只包括一個(gè)數(shù)據(jù)23,由于只包括一個(gè)數(shù)據(jù)元素的分組數(shù)據(jù)已經(jīng)是有序的,無(wú)須再對(duì)該分組數(shù)據(jù)DL4進(jìn)行排序。對(duì)于待排序分組DR4',其最大值為第四次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B3,,其值為5010,最小值為第五次快速排序分組時(shí)的基準(zhǔn)數(shù)據(jù)B4',其值為5006,由于分組數(shù)據(jù)DR4,的最大值與最小值之差加1后的值5010-5006+1=5<SIZE,因此,判定輔助數(shù)組的空間足以存儲(chǔ)分組數(shù)據(jù)DR4',所以,對(duì)分組數(shù)據(jù)DR4,進(jìn)行位圖排序,排序后的彩:據(jù)D如下<table>tableseeoriginaldocumentpage20</column></row><table>對(duì)于分組數(shù)據(jù)DR4,,,其只包括一個(gè)數(shù)據(jù)元素6008,由于只包括一個(gè)數(shù)據(jù)元素的分組數(shù)據(jù)已經(jīng)是有序的,無(wú)須再對(duì)該分組數(shù)據(jù)DR4"進(jìn)行排序。經(jīng)上述步驟后,凄t據(jù)D排序后的序列如下:<table>tableseeoriginaldocumentpage20</column></row><table>圖2示出了本發(fā)明實(shí)施例提供的計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理系統(tǒng)的結(jié)構(gòu),為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。該數(shù)據(jù)處理系統(tǒng)可以應(yīng)用于任何有排序需求的電子i殳備或者軟件系統(tǒng)中。其中輔助數(shù)組設(shè)置單元21建立輔助數(shù)組。該輔助數(shù)組設(shè)置單元21設(shè)置用于位圖排序的輔助數(shù)組的大小。在本發(fā)明實(shí)施例中,輔助數(shù)組設(shè)置單元21可以將輔助數(shù)組的大小直接設(shè)置為系統(tǒng)可以提供的內(nèi)存大小,也可以根據(jù)系統(tǒng)可以提供的內(nèi)存大小以及數(shù)據(jù)元素中數(shù)據(jù)的范圍來(lái)設(shè)置。當(dāng)輔助數(shù)組設(shè)置單元21根據(jù)系統(tǒng)可以提供的內(nèi)存大小以及數(shù)據(jù)元素中數(shù)據(jù)的范圍來(lái)設(shè)置輔助數(shù)組的大小時(shí),該輔助數(shù)組設(shè)置單元包括第一極值查找模塊211和數(shù)組大小設(shè)置模塊212。其中第一極值查找模塊211查找數(shù)據(jù)序列包括的數(shù)據(jù)元素的最大值Maxnum和最小值Minnum,并計(jì)算數(shù)據(jù)元素的最大值和最小值之差SIZE1為SIZEl=Maxnum-Minnum;數(shù)組大小設(shè)置模塊212獲取系統(tǒng)可以提供的內(nèi)存大小SIZE2,并將SIZE1和SIZE2中較小的一個(gè)設(shè)置為輔助數(shù)組的大小SIZE??臻g大小判斷單元22判斷輔助數(shù)組是否足夠存儲(chǔ)數(shù)據(jù)序列。在本發(fā)明實(shí)施例中,輔助數(shù)組存儲(chǔ)數(shù)據(jù)序列的格式如下下標(biāo)為M的元素表示數(shù)據(jù)M有多少個(gè)。根據(jù)輔助數(shù)組的存儲(chǔ)形式可知,當(dāng)數(shù)據(jù)序列中數(shù)據(jù)元素的最大值和最小值之差加1小于或者等于輔助數(shù)組的大小時(shí),該輔助數(shù)組足以存儲(chǔ)數(shù)據(jù)序列,否則輔助數(shù)組不足以存儲(chǔ)數(shù)據(jù)序列。因此,空間大小判斷單元22在判斷輔助數(shù)組是否足夠存儲(chǔ)數(shù)據(jù)序列時(shí),直接將數(shù)據(jù)序列包括的數(shù)據(jù)元素的最大值Maxnum與最小值Minnum之差加1的值與預(yù)先設(shè)置的輔助數(shù)組的大小SIZE進(jìn)4亍比豐交,即3尋Maxnum-Minnum+1與SIZE進(jìn)4亍比4交,當(dāng)Maxnum-Minnum十1小于或等于SIZE時(shí),則判定輔助數(shù)組足以存儲(chǔ)數(shù)據(jù)序列,否則判定輔助數(shù)組不足以存儲(chǔ)數(shù)據(jù)序列。快速排序分組單元23在空間大小判斷單元22判定輔助數(shù)組不足以存儲(chǔ)數(shù)據(jù)序列時(shí),采用快速排序法對(duì)數(shù)據(jù)序列進(jìn)行分組,將數(shù)據(jù)序列分成多個(gè)分組數(shù)據(jù)。該快速排序分組單元23包括基準(zhǔn)數(shù)據(jù)確定模塊231和數(shù)據(jù)分組模塊232。其中基準(zhǔn)數(shù)據(jù)確定模塊231從數(shù)據(jù)序列中任意選定一個(gè)數(shù)據(jù)元素作為基準(zhǔn)數(shù)據(jù);數(shù)據(jù)分組模塊232將數(shù)據(jù)序列中小于基準(zhǔn)數(shù)據(jù)的數(shù)據(jù)元素排在基準(zhǔn)數(shù)據(jù)的正向,將數(shù)據(jù)序列中大于基準(zhǔn)數(shù)據(jù)的數(shù)據(jù)元素排在基準(zhǔn)數(shù)據(jù)的反向,從而形成d、于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)、包括基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)和大于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)。其中基準(zhǔn)凄t據(jù)的正向和反向可以分別指基準(zhǔn)lt據(jù)的左方和右方,或者指基準(zhǔn)數(shù)據(jù)的右方和左方。此時(shí),空間大小判斷單元22還用于判斷輔助數(shù)組是否足夠存儲(chǔ)分組數(shù)據(jù)。該空間大小判斷單元22包括第二極值查找模塊221、大小判斷模塊222。其中第二極值查找模塊221查找分組數(shù)據(jù)的最大值和最小值,并計(jì)算分組數(shù)據(jù)的最大值和最小值之差加1的值;大小判斷模塊222將第二極值查找模塊221計(jì)算得到的分組數(shù)據(jù)的最大值和最小值之差加1的值與輔助數(shù)組設(shè)置單元21設(shè)置的輔助數(shù)組的大小值進(jìn)行比較,當(dāng)分組數(shù)據(jù)的最大值和最小值之差加1的值小于或者等于輔助數(shù)組的大小值時(shí),空間大小判斷單元22判定輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù),否則判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)。由于針對(duì)每個(gè)分組數(shù)據(jù),均要查找該分組數(shù)據(jù)中的最大值和最小值,從而增加了該排序方法的時(shí)間復(fù)雜度。為了加快該排序方法的排序速度,在本發(fā)明另一實(shí)施例中,第二極值查找模塊221可以由最小值確定模塊223、最大值確定模塊224替換。其中最小值確定模塊223將與分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)確定為分組數(shù)據(jù)的最小值,或者將數(shù)據(jù)序列中數(shù)據(jù)元素的最小值確定為分組數(shù)據(jù)的最小值。在本發(fā)明實(shí)施例中,當(dāng)存在與分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)時(shí),則最小值確定模塊223將與分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)作為分組數(shù)據(jù)的最小值,否則將數(shù)據(jù)元素的最小值確定為分組數(shù)據(jù)的最小值。最大值確定模塊224將與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)確定為分組數(shù)據(jù)的最大值,或者將數(shù)據(jù)序列中數(shù)據(jù)元素的最大值確定為分組數(shù)據(jù)的最大值。在本發(fā)明實(shí)施例中,當(dāng)存在與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)時(shí),則最大值確定模塊224將與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)確定為分組數(shù)據(jù)的最大值,否則將數(shù)據(jù)序列中數(shù)據(jù)元素的最大值作為分組數(shù)據(jù)的最大值。當(dāng)空間大小判斷單元22判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)時(shí),快速排序分組單元23還用于采用快速排序法對(duì)分組數(shù)據(jù)進(jìn)行分組,將分組數(shù)據(jù)再分成多個(gè)分組數(shù)據(jù)。位圖排序單元24在空間大小判斷單元22判定輔助數(shù)組足以存儲(chǔ)數(shù)據(jù)序列,或者輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù)時(shí),對(duì)數(shù)據(jù)序列或者分組數(shù)據(jù)進(jìn)行位圖排序。在本發(fā)明實(shí)施例中,當(dāng)輔助數(shù)組足以存儲(chǔ)數(shù)據(jù)序列時(shí),對(duì)數(shù)據(jù)序列進(jìn)行位圖排序,否則采用快速排序法將翁:據(jù)序列分成多個(gè)彩:據(jù)分組,當(dāng)輔助數(shù)據(jù)足以存儲(chǔ)分組數(shù)據(jù)時(shí),對(duì)分組凄t據(jù)進(jìn)行位圖排序,否則繼續(xù)采用快速排序法將分組數(shù)據(jù)分成多個(gè)新的數(shù)據(jù)分組,直至數(shù)據(jù)序列排序完畢,本發(fā)明實(shí)施例將位圖排序和快速排序進(jìn)行結(jié)合,通過(guò)快速排序?qū)?shù)據(jù)序列或者分組數(shù)據(jù)進(jìn)行分組,使分組數(shù)據(jù)內(nèi)的數(shù)據(jù)元素逐漸趨于緊湊和有序,再通過(guò)對(duì)分組數(shù)據(jù)進(jìn)行位圖排序,從而提高了數(shù)據(jù)排序方法的性能。對(duì)于稀疏數(shù)據(jù),由于對(duì)可以進(jìn)行位圖排序的分組數(shù)據(jù)進(jìn)行位圖排序,從而不會(huì)降低快速排序的性能,最壞情況下退化為快速排序法;對(duì)于稠密數(shù)據(jù),在不能直接使用位圖排序時(shí),可以通過(guò)快速排序?qū)Ψ纸M數(shù)據(jù)后,再進(jìn)行位圖排序,從而提高了數(shù)據(jù)排序的效率。同時(shí)通過(guò)將對(duì)應(yīng)的基準(zhǔn)數(shù)據(jù)作為分組數(shù)據(jù)的最大值和最小值,從而在采用快速排序進(jìn)行分組時(shí),可以快速界定分組數(shù)據(jù)的范圍,從而節(jié)省了查找分組數(shù)據(jù)的最大值和最小值的時(shí)間,進(jìn)一步提高了數(shù)據(jù)排序的性能。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。權(quán)利要求1、一種計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理方法,其特征在于,所述方法包括(1)所述計(jì)算機(jī)系統(tǒng)建立一個(gè)輔助數(shù)組;(2)所述計(jì)算機(jī)系統(tǒng)判斷所述輔助數(shù)組是否足以存儲(chǔ)數(shù)據(jù)序列,若是,則對(duì)所述數(shù)據(jù)序列進(jìn)行位圖排序;若否,則采用快速排序?qū)⑺鰯?shù)據(jù)分成多個(gè)分組數(shù)據(jù);(3)所述計(jì)算機(jī)系統(tǒng)判斷所述輔助數(shù)組是否足以存儲(chǔ)所述分組數(shù)據(jù),若是,則對(duì)所述分組數(shù)據(jù)進(jìn)行位圖排序;若否,則采用快速排序?qū)⑺龇纸M數(shù)據(jù)進(jìn)一步分成多個(gè)新的分組數(shù)據(jù);(4)重復(fù)執(zhí)行步驟(3),直至所述輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù)。2、如權(quán)利要求l所述的方法,其特征在于,所述輔助數(shù)組的存儲(chǔ)空間大小為所述計(jì)算機(jī)系統(tǒng)可提供的內(nèi)存的大小。3、如權(quán)利要求l所述的方法,其特征在于,所述步驟(l)包括查找所述數(shù)據(jù)序列包括的數(shù)據(jù)元素的最大值和最小值,并計(jì)算數(shù)據(jù)元素的最大值和最小值之差;獲取系統(tǒng)可提供的內(nèi)存大小,并將所述輔助數(shù)組的大小設(shè)置為所述數(shù)據(jù)元素的最大值和最小值之差與所述內(nèi)存大小中較小的一個(gè)值。4、如權(quán)利要求l所述的方法,其特征在于,所述步驟(3)中采用快速排序?qū)⑺龇纸M數(shù)據(jù)進(jìn)一步分成多個(gè)新的分組數(shù)據(jù)的步驟包括從所述分組數(shù)據(jù)中選擇一個(gè)數(shù)據(jù)元素作為基準(zhǔn)數(shù)據(jù);將所述分組數(shù)據(jù)中小于基準(zhǔn)數(shù)據(jù)的數(shù)據(jù)元素排在基準(zhǔn)數(shù)據(jù)的正向,將所述分組數(shù)據(jù)中大于基準(zhǔn)數(shù)據(jù)的數(shù)據(jù)元素排在基準(zhǔn)數(shù)據(jù)的反向,以將所述分組數(shù)據(jù)分成小于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)、包括基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)、以及大于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)。5、如權(quán)利要求4所述的方法,其特征在于,所述步驟(3)中判斷預(yù)設(shè)的輔助數(shù)組是否足以存儲(chǔ)分組數(shù)據(jù)的步驟包括當(dāng)存在與分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)時(shí),將與分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)確定為分組數(shù)據(jù)的最小值,否則將數(shù)據(jù)序列中數(shù)據(jù)元素的最小值確定為分組數(shù)據(jù)的最小值;當(dāng)存在與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)時(shí),將與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)確定為分組數(shù)據(jù)的最大值,否則將數(shù)據(jù)序列中數(shù)據(jù)元素的最大值作為分組數(shù)據(jù)的最大值;將分組數(shù)據(jù)的最大值與最小值之差加1的值與所述輔助數(shù)組的大小進(jìn)行比較,當(dāng)分組數(shù)據(jù)的最大值與最小值之差加1的值小于或等于所述輔助數(shù)組的大小時(shí),判定輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù),否則判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)。6、如權(quán)利要求l所述的方法,其特征在于,所述步驟(3)中判斷預(yù)設(shè)的輔助數(shù)組是否足以存儲(chǔ)分組數(shù)據(jù)的步驟進(jìn)一步包括查找分組數(shù)據(jù)的最大值和最小值,并計(jì)算分組數(shù)據(jù)的最大值和最'J、值之差力口1的^直;將分組數(shù)據(jù)的最大值與最小值之差加1的值與所述輔助數(shù)組的大小進(jìn)行比較,當(dāng)分組數(shù)據(jù)的最大值與最小值之差加1的值小于或等于所迷輔助數(shù)組的大小時(shí),則判定輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù),否則判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)。7、一種計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)處理系統(tǒng),其特征在于,所述系統(tǒng)包括輔助數(shù)組設(shè)置單元,用于建立輔助數(shù)組;空間大小判斷單元,用于判斷預(yù)設(shè)的輔助數(shù)組是否足以存儲(chǔ)數(shù)據(jù)序列,或者判斷所述輔助數(shù)組是否足以存儲(chǔ)分組數(shù)據(jù);快速排序分組單元,用于在所述空間大小判斷單元判定輔助數(shù)組不足以存儲(chǔ)所述數(shù)據(jù)序列時(shí),采用快速排序法對(duì)所述數(shù)據(jù)進(jìn)行分組,將所述數(shù)據(jù)分成多個(gè)分組數(shù)據(jù),或者在所述空間大小判斷單元判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)時(shí),采用快速排序法對(duì)分組數(shù)據(jù)進(jìn)行分組,將分組數(shù)據(jù)分成多個(gè)新的分組數(shù)據(jù);位圖排序單元,用于在所述空間大小判斷單元判定輔助數(shù)組足以存儲(chǔ)所述數(shù)據(jù)序列時(shí),對(duì)所述數(shù)據(jù)序列進(jìn)行位圖排序,或者在所述空間大小判斷單元判定輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù)時(shí),對(duì)分組數(shù)據(jù)進(jìn)行位圖排序。8、如權(quán)利要求7所述的系統(tǒng),其特征在于,所述輔助數(shù)組設(shè)置單元將所述輔助數(shù)組的大小設(shè)置為系統(tǒng)可提供的內(nèi)存的大小,或者所述輔助數(shù)組設(shè)置單元包括第一極值查找沖莫塊,用于查找所述數(shù)據(jù)序列包括的數(shù)據(jù)元素的最大值和最小值,并計(jì)算數(shù)據(jù)元素的最大值和最小值之差;數(shù)組大小設(shè)置沖莫塊,用于獲取系統(tǒng)可提供的內(nèi)存大小,并將所述輔助數(shù)組的大小設(shè)置為所述數(shù)據(jù)元素的最大值和最小值之差與所述內(nèi)存大小中較小的值。9、如權(quán)利要求7所述系統(tǒng),其特征在于,所述快速排序分組單元包括基準(zhǔn)數(shù)據(jù)確定模塊,用于從所述分組數(shù)據(jù)中選擇一個(gè)數(shù)據(jù)元素作為基準(zhǔn)數(shù)據(jù);數(shù)據(jù)分組模塊,用于將所述分組數(shù)據(jù)中小于基準(zhǔn)數(shù)據(jù)的數(shù)據(jù)排在基準(zhǔn)數(shù)據(jù)的正向,將所述分組數(shù)據(jù)中大于基準(zhǔn)數(shù)據(jù)的數(shù)據(jù)排在基準(zhǔn)數(shù)據(jù)的反向,以將所述分組數(shù)據(jù)分成小于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)、包括基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)、以及大于基準(zhǔn)數(shù)據(jù)的分組數(shù)據(jù)。10、如權(quán)利要求9所述系統(tǒng),其特征在于,所述空間大小判斷單元包括最小值確定模塊,用于當(dāng)存在與分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)時(shí),將與分組數(shù)據(jù)正向臨近的基準(zhǔn)數(shù)據(jù)確定為分組數(shù)據(jù)的最小值,否則將數(shù)據(jù)序列中數(shù)據(jù)元素的最小值確定為分組數(shù)據(jù)的最小值;最大值確定模塊,用于當(dāng)存在與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)時(shí),將與分組數(shù)據(jù)反向臨近的基準(zhǔn)數(shù)據(jù)確定為分組數(shù)據(jù)的最大值,否則將數(shù)據(jù)序列中數(shù)據(jù)元素的最大值作為分組數(shù)據(jù)的最大值;大小判斷模塊,用于將分組數(shù)據(jù)的最大值與最小值之差加l的值與所述輔助數(shù)組的大小進(jìn)行比較,當(dāng)分組數(shù)據(jù)的最大值與最小值之差加1的值小于或等于所述輔助數(shù)組的大小時(shí),則判定輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù),否則判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)。11、如權(quán)利要求7所述系統(tǒng),其特征在于,所述空間大小判斷單元包括第二極值查找模塊,用于查找分組數(shù)據(jù)的最大值和最小值,并計(jì)算分組數(shù)據(jù)的最大值和最小值之差加1的值;大小判斷模塊,用于將分組數(shù)據(jù)的最大值與最小值之差加1的值與所述輔助數(shù)組的大小進(jìn)行比較,當(dāng)分組數(shù)據(jù)的最大值與最小值之差加1的值小于或等于所述輔助數(shù)組的大小時(shí),則判定輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù),否則判定輔助數(shù)組不足以存儲(chǔ)分組數(shù)據(jù)。全文摘要本發(fā)明適用于計(jì)算機(jī)系統(tǒng)中的電數(shù)字?jǐn)?shù)據(jù)處理領(lǐng)域,提供了一種數(shù)據(jù)處理方法和系統(tǒng),所述方法包括下述步驟設(shè)立一個(gè)輔助數(shù)組;判斷預(yù)設(shè)的輔助數(shù)組是否足以存儲(chǔ)數(shù)據(jù)序列,當(dāng)所述輔助數(shù)組足以存儲(chǔ)所述數(shù)據(jù)序列時(shí),對(duì)所述數(shù)據(jù)序列進(jìn)行位圖排序,否則采用快速排序?qū)⑺鰯?shù)據(jù)序列分成多個(gè)分組數(shù)據(jù);判斷所述輔助數(shù)組是否足以存儲(chǔ)所述分組數(shù)據(jù),當(dāng)所述輔助數(shù)組足以存儲(chǔ)所述分組數(shù)據(jù)時(shí),對(duì)所述分組數(shù)據(jù)進(jìn)行位圖排序,否則采用快速排序?qū)⑺龇纸M數(shù)據(jù)分成多個(gè)新的分組數(shù)據(jù),循環(huán)執(zhí)行,直至所述輔助數(shù)組足以存儲(chǔ)分組數(shù)據(jù)。通過(guò)將位圖排序和快速排序進(jìn)行結(jié)合,在對(duì)數(shù)據(jù)進(jìn)行快排分組的過(guò)程中,對(duì)數(shù)據(jù)比較緊湊的分組使用位圖排序,從而提高了數(shù)據(jù)排序的性能。文檔編號(hào)G06F17/30GK101510215SQ20091010621公開(kāi)日2009年8月19日申請(qǐng)日期2009年3月20日優(yōu)先權(quán)日2009年3月20日發(fā)明者馮院華申請(qǐng)人:炬力集成電路設(shè)計(jì)有限公司