專利名稱::基于概率分布的計(jì)算機(jī)排序技術(shù)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計(jì)算機(jī)技術(shù)中一類非常基礎(chǔ)和重要的問題排序。
背景技術(shù):
:排序是計(jì)算機(jī)領(lǐng)域中一類非?;A(chǔ)和重要的問題,在計(jì)算機(jī)技術(shù)中經(jīng)常遇到,并且在很多數(shù)據(jù)處理過程中占用了大量的計(jì)算時(shí)間。同時(shí)排序也具有相當(dāng)?shù)睦碚搩r(jià)值??焖?、高效的計(jì)算機(jī)排序技術(shù)一直是人們所感興趣的問題。排序問題的數(shù)學(xué)描述給定N個(gè)無序的數(shù)據(jù)XN=(x0,x1,...,xN-1),找到XN的一個(gè)全排列YN=(y0,y1,...,yN-1),使得對(duì)于任何k=1,2,...,N-1都有yk-1y成立。若YN中的ym與XN中的某個(gè)xn相對(duì)應(yīng),則稱m是xn的目標(biāo)位置(或者也稱ym是xn的目標(biāo)位置)。說明“”是定義于待排數(shù)據(jù)集上的一種次序關(guān)系。如上文“yk-1yk”表示yk-1應(yīng)位于yk之前(或我們并不介意二者的相對(duì)位置關(guān)系,這時(shí)ykyk-1也成立,記作yk-1≡yk)。說明在實(shí)際應(yīng)用中XN和YN可根據(jù)需要使用相同或者不同的存儲(chǔ)空間。前者稱為“原地置換排序(In-placeSort)”。如XN的存儲(chǔ)空間不被破壞則稱為“穩(wěn)定排序(StableSort)”。說明后文也用方括號(hào)“[]”代替下標(biāo)。例如x[n],表達(dá)與xn相同的含義。根據(jù)應(yīng)用環(huán)境不同,排序技術(shù)可以分成兩類內(nèi)排序和外排序。內(nèi)排序指待排數(shù)據(jù)量較少,所有的數(shù)據(jù)都可以(存放于計(jì)算機(jī)內(nèi)存中)供隨機(jī)訪問的情形。但是,如果待排數(shù)據(jù)量超過了內(nèi)存容量,則一次只能從外存設(shè)備(如磁帶、磁盤等)讀入部分?jǐn)?shù)據(jù)在內(nèi)存中排序,并且需要通過多次內(nèi)排序操作才能實(shí)現(xiàn)排序目的。這種情形稱為外排序。針對(duì)不同情況,目前已經(jīng)發(fā)展出各種各樣的排序技術(shù)。常用內(nèi)排序技術(shù)有選擇排序、冒泡排序、Shell(希爾)排序、堆排序、歸并排序、快速排序、基數(shù)排序方法等等。常用的外排序技術(shù)則有歸并法和二階段法。下面介紹其中幾種。冒泡內(nèi)排序(BubbleSort)這是一種簡(jiǎn)單的原地置換排序技術(shù)。其基本思想是將待排數(shù)據(jù)看作是豎著排列的“氣泡”,較小數(shù)據(jù)比較“輕”,從而要往上浮。自底向上檢查待排數(shù)據(jù)集,交換次序不正確的相鄰數(shù)據(jù),使輕的數(shù)據(jù)上浮。這樣一遍處理之后,最輕的數(shù)據(jù)就浮到了最高位置;處理第二遍之后,次輕的元素浮到了次高位置。在作第二遍處理時(shí),由于最高位置上的元素已是最輕元素,所以不必檢查。一般地,進(jìn)行第n遍處理時(shí),不必檢查第n高位置以上的元素,因?yàn)榻?jīng)過前面n-1遍處理,它們已正確地排好序。顯然,冒泡排序的基本操作是比較與交換。快速內(nèi)排序(QuickSort)這是一種遞歸的排序技術(shù),同時(shí)也是一種原地置換排序技術(shù)。從待排數(shù)據(jù)集中任取一個(gè)數(shù)據(jù)x0作為分界點(diǎn)(Pivot),將所有小于x0的數(shù)據(jù)挪動(dòng)到x0的前面,所有大于x0的數(shù)據(jù)挪動(dòng)到x0的后面,則只要當(dāng)x0前面和x0后面的數(shù)據(jù)分別達(dá)到有序就能夠?qū)崿F(xiàn)整個(gè)數(shù)據(jù)集有序。而對(duì)x0前后數(shù)據(jù)進(jìn)行排序可以通過遞歸的方式實(shí)現(xiàn)??焖倥判虻幕静僮魅允谴艛?shù)據(jù)的比較與交換?;鶖?shù)內(nèi)排序(RadixSort)這是一種基于關(guān)鍵字分解的排序技術(shù),要求數(shù)據(jù)的相對(duì)次序由多個(gè)子關(guān)鍵字共同確定。字符串或整數(shù)型數(shù)據(jù)顯然是可以分解成多個(gè)子關(guān)鍵字的?;鶖?shù)排序技術(shù)有兩種形式,一種稱為基數(shù)交換排序法(高子關(guān)鍵字優(yōu)先),即首先根據(jù)最高子關(guān)鍵字將數(shù)據(jù)分成若干組,然后在每組中根據(jù)次高子關(guān)鍵字分成若干小組。依從高到低的次序?qū)λ械淖雨P(guān)鍵字重復(fù)此過程,最后便得到一個(gè)有序序列。另一種稱為直接基數(shù)排序(低子關(guān)鍵字優(yōu)先)的方法,即由低到高的次序,依次使用各子關(guān)鍵字對(duì)待排數(shù)據(jù)進(jìn)行排序。依任一子關(guān)鍵字排序過程中,都要求子關(guān)鍵字相同數(shù)據(jù)的原始次序不發(fā)生改變?;鶖?shù)交換排序法的缺點(diǎn)在于缺乏有效的分組方法,而直接基數(shù)排序法則可通過鏈表實(shí)現(xiàn),因此后者使用更加廣泛。由于需要針對(duì)各子關(guān)鍵字多次掃描待排數(shù)據(jù),基數(shù)內(nèi)排序技術(shù)只應(yīng)用于內(nèi)排序。二階段外排序?qū)⒋判驍?shù)據(jù)分成多個(gè)內(nèi)存能夠容納的部分,分別對(duì)每一個(gè)部分進(jìn)行內(nèi)排序后存儲(chǔ)于相應(yīng)的臨時(shí)文件中(排序階段)。然后同時(shí)打開所有的臨時(shí)文件,取出各文件最前部(即該文件中的最小數(shù)據(jù))的數(shù)據(jù)并選取其最小者,即為臨時(shí)文件中所有待排數(shù)據(jù)的最小者,可將此數(shù)據(jù)追加到輸出文件的末尾,并從原臨時(shí)文件中刪除。重復(fù)該過程,直到所有臨時(shí)文件中的數(shù)據(jù)都被刪除為止(歸并階段)。三、發(fā)明目的對(duì)一般情況進(jìn)行分析就會(huì)發(fā)現(xiàn),待排數(shù)據(jù)看似雜亂無章,但在統(tǒng)計(jì)上卻往往具有一定的概率分布特性。其原因在于待排數(shù)據(jù)往往產(chǎn)生于特定的數(shù)據(jù)生成機(jī)制。例如在擲正方體色子過程中,如果色子是均勻的,那么擲出每個(gè)點(diǎn)數(shù)的概率都應(yīng)是1/6(均勻分布);如果色子不均勻,那么擲出某些特定點(diǎn)數(shù)的概率會(huì)偏大(或者偏小)。又如正常條件下使用的燈泡壽命符合幾何分布;當(dāng)統(tǒng)計(jì)范圍足夠廣時(shí),特定時(shí)刻特定地區(qū)的物種數(shù)量往往呈幾何泊松分布;大規(guī)模統(tǒng)計(jì)得到的人口身高、壽命等大都呈正態(tài)分布,等等。另外,一般可以認(rèn)為同一數(shù)據(jù)集中不同數(shù)據(jù)的產(chǎn)生并不存在必然的聯(lián)系,或者說是互相獨(dú)立的。概率上把“服從同一概率分布”和“數(shù)據(jù)產(chǎn)生彼此獨(dú)立”這兩個(gè)特性合稱“獨(dú)立同分布”(Independent&IdenticalDistribution,I.I.D.)。大多數(shù)情況下待排數(shù)據(jù)都可認(rèn)為是獨(dú)立同分布的。目前公知的排序技術(shù)都沒有考慮待排序數(shù)據(jù)的概率分布特性。本發(fā)明針對(duì)“獨(dú)立同分布”的數(shù)據(jù)集提出基于概率分布的排序技術(shù)。該技術(shù)通過一個(gè)定義于待排數(shù)據(jù)集的分布哈希函數(shù),利用待排數(shù)據(jù)集的概率分布特性對(duì)數(shù)據(jù)的目標(biāo)位置進(jìn)行預(yù)測(cè),將原排序問題分解成多個(gè)小規(guī)模的排序子問題,有效減少數(shù)據(jù)比較與交換次數(shù),提高排序效率。四
發(fā)明內(nèi)容本發(fā)明最重大的特征是,在對(duì)批量數(shù)據(jù)進(jìn)行排序的過程中,利用待排數(shù)據(jù)集的概率分布特性對(duì)待排數(shù)據(jù)的目標(biāo)位置進(jìn)行預(yù)測(cè),據(jù)此將原排序問題分解成多個(gè)規(guī)模較小的子問題。而這種預(yù)測(cè)和分解則是通過下面定義的“分布哈希函數(shù)”實(shí)現(xiàn)的。設(shè)M和N都是正整數(shù),且M≤N。對(duì)于數(shù)據(jù)集XN=(x0,x1,...,xN-1)及定義于XN上的函數(shù)hM,以下條件合稱為分布哈希(DistributedHash)條件。滿足分布哈希條件的函數(shù)hM稱為XN上的分布哈希函數(shù)稱λ=M/N≤1為“沖突度(Conflict)”,它刻劃了對(duì)待排數(shù)據(jù)XN的目標(biāo)位置進(jìn)行預(yù)測(cè)所能夠達(dá)到的精確程度。對(duì)于待排數(shù)據(jù)集XN=(x0,x1,...,xN-1),我們按照表2給出的步驟來對(duì)XN進(jìn)行排序。其中步驟S3需要一種獨(dú)立的排序方法。說明具體實(shí)現(xiàn)中步驟S1、S2、S3不一定按表2中給出的次序進(jìn)行。如果將步驟S1和S2和并,則相當(dāng)于對(duì)hM(XN)={hM(x0),hM(x1),...,hM(xN-1)}進(jìn)行排序,即依分布哈希函數(shù)的取值對(duì)待排數(shù)據(jù)進(jìn)行排序。步驟S0、S1、S2將原排序問題分解成M個(gè)排序子問題??梢灾?,沖突度λ=M/N是步驟S1所生成的M個(gè)子集的平均待排數(shù)據(jù)個(gè)數(shù),也是這M個(gè)子問題的平均規(guī)模。由分布哈希條件DH3,這些子問題的規(guī)模相近。特別當(dāng)λ較小時(shí),所有的子問題都容易解決。步驟S0需要計(jì)算XN上的分布哈希函數(shù)。計(jì)算機(jī)所能夠處理的都是離散數(shù)據(jù);如果待排數(shù)據(jù)量往往很大,數(shù)據(jù)分布在取值區(qū)間上一般可以認(rèn)為是稠密的,這使得我們完全可以把離散數(shù)據(jù)當(dāng)成連續(xù)數(shù)據(jù)來考慮。為了方便后面僅討論連續(xù)情形。若XN滿足獨(dú)立同分布條件,則xn的概率分布函數(shù)dn(x)=Pr(xn<x)與n無關(guān),可直接記作d(x)。步驟S1中,hM(x)=[Md(x)]可以充當(dāng)XN上的分布哈希函數(shù)。這里“[z]”不大于z的最大整數(shù)(為方便特別定義[M]=M-1)??梢灾?,λMd(x)=Nd(x)=NPr(xn<x),這就是取值為x的待排數(shù)據(jù)在XN中期望的目標(biāo)位置。由于0≤Md(x)-hM(x)<1,因此λhM(x)作為x目標(biāo)位置的估計(jì)值,其誤差的期望值不超過λ。在很多情況下我們能夠直接確定待排數(shù)據(jù)的概率分布函數(shù)d(x)。例如通過分析數(shù)據(jù)產(chǎn)生機(jī)制確定待排數(shù)據(jù)所屬的分布類型;然后對(duì)部分?jǐn)?shù)據(jù)進(jìn)行抽樣計(jì)算以獲得分布的具體參數(shù)(比如均值、方差等),從而最終確定數(shù)據(jù)的概率分布。統(tǒng)計(jì)學(xué)提供了很多確定數(shù)據(jù)概率分布的方法,即使在數(shù)據(jù)產(chǎn)生機(jī)制不明或者難以分析的情況下我們也往往能夠借助統(tǒng)計(jì)手段來確定待排數(shù)據(jù)的概率分布d(x)。在某些情況下我們很難給出待排數(shù)據(jù)概率分布函數(shù)d(x)的具體形式,或者即使能夠給出也不便于計(jì)算。這時(shí)我們可以首先確定d(x)在少數(shù)幾個(gè)點(diǎn)上的取值,然后通過插值(簡(jiǎn)單的線性插值或者其他更加復(fù)雜的插值方法)來計(jì)算d(x)在其他位置的取值。而在某個(gè)點(diǎn)x處分布函數(shù)d(x)的估計(jì)值可通過對(duì)一定容量的樣本進(jìn)行頻率統(tǒng)計(jì)得到從XN中取一定容量的樣本,將其中不超過x的樣本數(shù)除以樣本總數(shù)便得到d(x)的估計(jì)值。設(shè)x(m)滿足對(duì)于任意待排數(shù)據(jù)x1和x2,只要hM(x1)=m且hM(x2)=m+1則有x1x(m)x2,即x(m)是所有hM值為m的x和所有hM值為m+1的x的分界點(diǎn)(為方便指定x(0)和x(M),滿足對(duì)于任意待排數(shù)據(jù)x都有x(0)xx(M)。那么只要確定了X(M)={x(0),x(1),x(2),...,x(m),...,x(M-1),x(M)}即可確定hM對(duì)于待排數(shù)據(jù)x,只要找到x(m)和x(m+1)滿足x(m)xx(m+1)就有hM(x)=m。由于X(M)本身是有序的,這一查找過程可以通過二分法進(jìn)行。由條件DH3,我們可以通過下面的“抽樣有序M-分點(diǎn)”方法來估計(jì)X(M),進(jìn)而計(jì)算hM(x)對(duì)于整數(shù)γ(M<γ<N),任取γ個(gè)樣本(例如XN的前γ個(gè)數(shù)據(jù))使用任何一種排序方法對(duì)其進(jìn)行排序,并將x(m)取作排序后的第個(gè)樣本,m=1,2,...,M-1。顯然,γ越大該估計(jì)的精度相應(yīng)越高。五、與公知排序技術(shù)的比較我們可以由前面給出的表達(dá)式hM(x)=[Md(x)]看出,分布哈希函數(shù)包含了待排數(shù)據(jù)集XN的概率分布信息(即d(x))。而表2中的步驟S1和S2則通過該分布信息對(duì)待排數(shù)據(jù)的目標(biāo)的位置進(jìn)行預(yù)測(cè),并據(jù)此對(duì)原排序問題進(jìn)行分解。本發(fā)明所給出的排序技術(shù)與前面以數(shù)據(jù)比較與交換為基礎(chǔ)的冒泡內(nèi)排序、快速內(nèi)排序、二階段外排序等是完全不同的排序技術(shù)。比較接近技術(shù)的是基數(shù)內(nèi)排序方法基數(shù)內(nèi)排序方法需要依照某個(gè)子關(guān)鍵字排序,而表2給出的步驟S2和S3合并后得到依hM有序的數(shù)據(jù)集,也相當(dāng)于按hM排序。是否可以將前者的子關(guān)鍵字與后者中的hM視為同一呢?基數(shù)排序技術(shù)要求待排數(shù)據(jù)具有多個(gè)子關(guān)鍵字。由于服從條件DH2(保序),hM確實(shí)能夠充當(dāng)基數(shù)排序所需的最高子關(guān)鍵字;但本發(fā)明中并不存在次高關(guān)鍵字?;鶖?shù)排序需要反復(fù)針對(duì)不同的關(guān)鍵字進(jìn)行排序的操作,類似操作在本發(fā)明給出的排序技術(shù)中只使用一次。雖然hM確實(shí)能夠充當(dāng)基數(shù)排序所需的最高關(guān)鍵字,但基數(shù)排序所使用的最高子關(guān)鍵字卻不一定能夠擔(dān)任hM的角色,因?yàn)閷?duì)于該最高關(guān)鍵字而言,條件DH3(分布)不一定能夠得到滿足。其原因在于基數(shù)內(nèi)排序方法沒有考慮待排序數(shù)據(jù)的概率分布特性。在實(shí)際使用中,基數(shù)排序法每個(gè)子關(guān)鍵字的狀態(tài)數(shù)由關(guān)鍵字的分解方式所決定,很難隨意改變。而本技術(shù)中的M則沒有限制,可以根據(jù)實(shí)際情況在1到N之間任意選擇以使排序性能達(dá)到充分發(fā)揮。基數(shù)內(nèi)排序方法的基礎(chǔ)是待排數(shù)據(jù)關(guān)鍵字的分解過程。而本發(fā)明所給出的排序技術(shù),對(duì)原排序問題的分解依據(jù)是待排數(shù)據(jù)的概率分布,二者具有本質(zhì)區(qū)別。六、典型實(shí)施方式將本發(fā)明所給出的排序技術(shù)應(yīng)用于不同的環(huán)境,可以得到具體的內(nèi)排序及外排序方法。6.1內(nèi)排序內(nèi)排序指待排數(shù)據(jù)量較少,所有的數(shù)據(jù)都可以存放于計(jì)算機(jī)內(nèi)存中供隨機(jī)訪問的情形。表3中給出的步驟將對(duì)存放于XN={x0,x1,...,xN-1}中的數(shù)據(jù)進(jìn)行排序,并將排序結(jié)果存放于YN={y1,y2,...,yN}。這是一種穩(wěn)定排序方法,不修改XN中的數(shù)據(jù),運(yùn)行結(jié)束后的YN即為XN的排序結(jié)果。其中需要使用整數(shù)輔助空間PN={p0,p1,...,pN-1},CM={c0,c1,...,cM-1}和SM+1={s-1,s0,s1,s2,...,sM-1},以及一種原地置換排序方法(比如冒泡排序或者快速排序)。表3中的步驟IS1到IS6即為對(duì)hM(XN)={hM(x0),hM(x1),...,hM(xN-1)}排序,對(duì)應(yīng)了表2中的步驟S1和步驟S2。步驟IS7對(duì)應(yīng)表2中的步驟S3。我們可以使用較大的M以獲得比較精確的預(yù)測(cè)。這時(shí)沖突度λ較小,分解后所得到的子問題規(guī)模也較小。這對(duì)于步驟IS7中的原地置換排序方法是非常有利的。但是過小的λ對(duì)前面的步驟IS3到IS6不利。需要指出的是,如果這里的分布哈希函數(shù)hM(x)不能嚴(yán)格滿足條件DH3,那么以上步驟仍然能夠正常工作,但是其工作效率可能會(huì)受到影響。在可接受的情況下,我們可以不必精確計(jì)算hM(x)(例如把一些非均勻分布當(dāng)成均勻分布處理)。如果hM(x)易于計(jì)算,可省略PN和步驟IS1,并用hM(xi)直接代替步驟IS3和IS6中的pi。SM+1和CM可以合并,從而節(jié)省M個(gè)輔助存儲(chǔ)空間(整數(shù))。步驟IS6之后不再使用輔助空間PN,該步驟可以分解成兩部分即首先將xi在YN中的位置記錄在pi中。由于CPU對(duì)內(nèi)存具有一定的緩存機(jī)制,上面的分解做法有可能提高效率。不過更重要的是,這種改變提供了一種直接對(duì)XN進(jìn)行排序的途徑。表3內(nèi)排序方法將無序的XN按次序拷貝到Y(jié)N中,其間XN不發(fā)生任何改變,因此是一種穩(wěn)定排序。如果內(nèi)存空間不允許開辟YN保存排序結(jié)果,也可以直接在XN上進(jìn)行原地置換排序,這只需將上面的步驟IS7b修改為然后將步驟IS8修改為對(duì)XN操作即可??梢宰C明,如果上面所使用的原地置換排序方法具有多項(xiàng)式時(shí)間復(fù)雜度,那么表3所給出的內(nèi)排序方法的平均時(shí)間復(fù)雜度是線性的。6.2外排序計(jì)算機(jī)內(nèi)存是有限的;待排數(shù)據(jù)量超過一定規(guī)模時(shí)就不可能將所有的數(shù)據(jù)全部裝入內(nèi)存進(jìn)行隨機(jī)訪問。相對(duì)而言,外存儲(chǔ)器(磁盤或者磁帶等)廉價(jià)且易于擴(kuò)展,但訪問速度非常慢(隨機(jī)訪問尤其困難)。操作系統(tǒng)中的批量數(shù)據(jù)常常以能夠順序讀寫的“文件”形式存放。仍然記XN=(x1,x2,...,xN)為待排數(shù)據(jù)(N表示待排數(shù)據(jù)個(gè)數(shù));內(nèi)存至多可容納超過λmax個(gè)元素進(jìn)行內(nèi)排序。取1<λ<λmax,記β=λ/λmax<1(β為平均內(nèi)存利用率),M=N/λ。表4給出的方法將對(duì)存儲(chǔ)于輸入文件Fin的待排序數(shù)據(jù)進(jìn)行排序,并將排序結(jié)果輸出保存于Fout。如果不需要保存原始數(shù)據(jù),可在步驟OS3中將Fin清空并直接用作Fout。排序過程中需要用到M個(gè)臨時(shí)文件F0,F(xiàn)1,...,F(xiàn)M-1。這里的步驟OS1和OS2相當(dāng)于表2中的步驟S2,步驟OS3和OS4則相當(dāng)于表2中的步驟S3和S4。步驟OS4中可以使用前面介紹的內(nèi)排序方法。并且在大所述情況下可以認(rèn)為文件Fm中的待排數(shù)據(jù)服從均勻分布,從而簡(jiǎn)化內(nèi)排序方法的應(yīng)用。排序過程中涉及M個(gè)臨時(shí)文件,因此M不宜太大(λ不宜太小)。由于要將臨時(shí)文件中的數(shù)據(jù)讀入內(nèi)存進(jìn)行內(nèi)排序,因此希望任意臨時(shí)文件中的數(shù)據(jù)量不超過λmax。而文件Fm中的數(shù)據(jù)個(gè)實(shí)際上是hM取值為m的待排數(shù)據(jù)個(gè)數(shù)。由于排序子問題規(guī)模相近,所有排序子問題的規(guī)模不會(huì)超過λ太多,因此保證λmax略大于λ即可。可以證明,所有臨時(shí)文件中的數(shù)據(jù)量都不超過λmax的概率大于1-M·((2β1+β)1-β2)λmax.]]>權(quán)利要求1.在對(duì)批量數(shù)據(jù)進(jìn)行排序的過程中,利用待排數(shù)據(jù)集的概率統(tǒng)計(jì)特性對(duì)待排數(shù)據(jù)的目標(biāo)位置進(jìn)行預(yù)測(cè),并據(jù)此將排序問題分解。2.根據(jù)權(quán)利要求1所述,在排序過程中使用分布哈希函數(shù)對(duì)待排數(shù)據(jù)的目標(biāo)位置進(jìn)行預(yù)測(cè)。3.根據(jù)權(quán)利要求2所述,,在排序過程中根據(jù)預(yù)測(cè)結(jié)果將原排序問題分解成規(guī)模相近的若干排序子問題。4.根據(jù)權(quán)利要求2所述,在排序過程中依分布哈希函數(shù)的取值將待排數(shù)據(jù)分成規(guī)模相近的若干子集。5.根據(jù)權(quán)利要求2所述,在排序過程中依分布哈希函數(shù)的取值對(duì)待排數(shù)據(jù)進(jìn)行排序。6.根據(jù)權(quán)利要求2所述,通過確定待排數(shù)據(jù)集的概率分布計(jì)算分布哈希函數(shù)。7.根據(jù)權(quán)利要求2所述,估算概率分布函數(shù)在部分點(diǎn)處的值,通過插值的方法計(jì)算概率分布函數(shù)或者分布哈希函數(shù)。8.根據(jù)權(quán)利要求2所述,通過計(jì)算樣本數(shù)據(jù)的有序K-分點(diǎn)來估算分布哈希函數(shù)。全文摘要本發(fā)明涉及計(jì)算機(jī)技術(shù)中的排序問題。以待排數(shù)據(jù)量N定義問題規(guī)模,目前公知內(nèi)排序算法平均時(shí)間復(fù)雜度都不低于O(N·logN)。大多數(shù)情況下待排數(shù)據(jù)可認(rèn)為是“獨(dú)立同分布”的,但公知排序技術(shù)都沒有考慮這一統(tǒng)計(jì)特性。本文提出的排序技術(shù),通過概率手段對(duì)待排數(shù)據(jù)目標(biāo)位置進(jìn)行估計(jì),有效減少數(shù)據(jù)的比較與交換操作,提高排序效率。本發(fā)明給出具體的內(nèi)、外排序方法,內(nèi)排序方法平均時(shí)間復(fù)雜度為O(N)。文檔編號(hào)G06F17/00GK1530852SQ0311971公開日2004年9月22日申請(qǐng)日期2003年3月10日優(yōu)先權(quán)日2003年3月10日發(fā)明者楊磊,黃輝,楊磊申請(qǐng)人:楊磊,楊磊