亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種大數(shù)據(jù)索引的排序方法

文檔序號:6537127閱讀:221來源:國知局
一種大數(shù)據(jù)索引的排序方法
【專利摘要】本發(fā)明公開了一種大數(shù)據(jù)索引的排序方法,采用分治的思想按索引的關(guān)鍵字對索引數(shù)據(jù)進(jìn)行動態(tài)地分區(qū)排序,對每個分區(qū)內(nèi)的索引數(shù)據(jù),采用類似于平衡二叉樹的方法組成一棵包括多個索引項的結(jié)點構(gòu)成的二叉排序樹。在讀入數(shù)據(jù)的同時進(jìn)行排序,每讀入一個索引項,就按索引項關(guān)鍵字值放入相應(yīng)的區(qū)間進(jìn)行排序,數(shù)據(jù)讀入完成,排序也就完成了。讀完了數(shù)據(jù)只要按分區(qū)順序?qū)ο鄳?yīng)的二叉排序樹進(jìn)行中序遍歷就得到了排序結(jié)果。本發(fā)明在高配置的計算機(jī)系統(tǒng)上使用,充分發(fā)揮計算機(jī)的性能,更加符合大數(shù)據(jù)對算法復(fù)雜性的要求。本發(fā)明克服了傳統(tǒng)的內(nèi)排序算法不適合處理大數(shù)據(jù)的不足,采用本發(fā)明進(jìn)行索引排序有效提高了算法的效率。
【專利說明】—種大數(shù)據(jù)索引的排序方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于大數(shù)據(jù)處理的【技術(shù)領(lǐng)域】,特別涉及一種大數(shù)據(jù)索引的排序方法。
【背景技術(shù)】
[0002]大數(shù)據(jù)來啦! Facebook分享的內(nèi)容條數(shù)達(dá)10億,數(shù)據(jù)量達(dá)到TB數(shù)量級。作為傳統(tǒng)數(shù)據(jù)處理的基本技術(shù),排序在大數(shù)據(jù)時代仍然是十分重要的一個基本操作,與此前不同的是大數(shù)據(jù)對包括排序算法在內(nèi)的所有算法的時間復(fù)雜性要求不再滿足于多項式時間復(fù)雜度,甚至像O (N* log N)這樣的所謂最優(yōu)的復(fù)雜度,它期望達(dá)到線性復(fù)雜度:O (N)。
[0003]現(xiàn)代計算機(jī)與50年前甚至10多年前的計算機(jī)相比已不可同日而語,64位機(jī)器已相當(dāng)普遍,地址空間達(dá)到了 264,AMD64架構(gòu)支持52位(4PB)的地址總線和48位(256TB)的虛擬地址空間。DELL機(jī)器實際配置的物理內(nèi)存達(dá)96G,標(biāo)配硬盤容量到了 1.5TB,三級緩存也是20年前不可想象的12M。Linux系統(tǒng)的虛擬內(nèi)存可達(dá)實際物理內(nèi)存的2倍,而內(nèi)存頁面大小可為4M,64位的Linux則分別支持46位(64TB)的物理地址空間和47位(128T)的進(jìn)程虛擬地址空間,64位的windows7最大支持128G的內(nèi)存。不同平臺上64位的編譯器已經(jīng)很普遍,可以說現(xiàn)代計算機(jī)的高性能和高配置為大數(shù)據(jù)處理帶來了方便。
[0004]但傳統(tǒng)的排序算法并不適合直接移植到現(xiàn)代計算機(jī)上來就可以處理大數(shù)據(jù)。
[0005]經(jīng)典排序算法包括插入排序、選擇排序、交換排序、歸并排序和分布排序等五個類型。插入排序、選擇排序、交換排序、歸并排序等這類比較排序都采用“比較”和“移動”兩個基本操作,以順序存儲結(jié)構(gòu)存放待排序數(shù)據(jù)。插入排序在數(shù)據(jù)量很小時是高效的,但其時間復(fù)雜度達(dá)到了 O (N2)。樹形選擇排序利用前期的工作減少了后期的工作量,其中的堆排序被認(rèn)為是經(jīng)典排序算法中最好的,其時間復(fù)雜度達(dá)到了 O (N*峋N),但有比較大的常數(shù)因子。交換排序中的快速排序在最壞情況下的時間復(fù)雜度達(dá)到了 O (N2),因為它是遞歸的,在數(shù)據(jù)量大的時候是不能容忍的。歸并排序盡管時間復(fù)雜度比較理想,但其空間復(fù)雜度達(dá)到了 O (N)。分布排序包括基數(shù)排序、計數(shù)排序和桶排序等這類所謂線性時間排序,也有其局限性。基數(shù)排序采用“分配”和“收集”兩個基本操作,按多關(guān)鍵字排序的思想,以每個關(guān)鍵字在其取值范圍內(nèi)的每個值組織一個鏈表來存儲數(shù)據(jù),它是針對關(guān)鍵字在一個較小范圍內(nèi)的排序算法。計數(shù)排序?qū)﹃P(guān)鍵字的取值范圍有限制,即最大元素值小于元素個數(shù),輔存空間大。桶排序是以假設(shè)關(guān)鍵字均勻分布為基礎(chǔ)。位圖算法的限制是排序數(shù)不能太大,數(shù)據(jù)無重復(fù),只能是整數(shù)或映射到整數(shù)的數(shù)據(jù)??傊@些經(jīng)典的排序算法都不能充分發(fā)揮現(xiàn)代計算機(jī)的性能,也不適合大數(shù)據(jù)環(huán)境。
[0006]以歸并為核心的外排序算法因為要多次讀、寫文件也不適合于大數(shù)據(jù)環(huán)境。即使是在集群上運(yùn)行的PSRS這類超級快速并行排序算法,因為負(fù)載均衡的難題、通信的瓶頸和不可避免的歸并等原因其加速效果也有限,原因是并行排序算法也需要合適的內(nèi)排序算法作基礎(chǔ)。在互聯(lián)網(wǎng)的今天,我們都在說:數(shù)據(jù)堆積、知識貧乏。信息檢索的重要性是不言而喻的,而索引在檢索中的重要性則是眾所周知,索引的排序是檢索的關(guān)鍵操作之一。
[0007]現(xiàn)有的排序算法無論是內(nèi)排序還是外排序抑或是并行排序一方面都沒有充分發(fā)揮現(xiàn)代計算機(jī)的性能,另一方面也難以滿足大數(shù)據(jù)處理的需要。不管將來的集群有多大,也不論“云”有多廣,大數(shù)據(jù)的排序,是大數(shù)據(jù)分析中的基礎(chǔ)工作。利用現(xiàn)代計算機(jī)的特點并充分地發(fā)揮它的性能,開發(fā)在單機(jī)上運(yùn)行的大數(shù)據(jù)處理的排序算法有其必要性和現(xiàn)實性。

【發(fā)明內(nèi)容】

[0008]發(fā)明目的:本發(fā)明的目的在于針對現(xiàn)有技術(shù)的不足,提供一種有效提高算法效率的大數(shù)據(jù)索引的排序方法。
[0009]技術(shù)方案:為了達(dá)到上述發(fā)明目的,本發(fā)明提供一種大數(shù)據(jù)索引的排序方法,包括以下步驟:
[0010]步驟1:根據(jù)索引關(guān)鍵字的取值范圍將索引初始劃分為Size/Alpha個區(qū)間,其中,Size=+為規(guī)??刂茀?shù),Alpha為分布密度差異系數(shù),N為索引項的總數(shù),同時根據(jù)索引
項的取值范圍和劃分的區(qū)間數(shù)平均設(shè)定每個區(qū)間索引關(guān)鍵字值的上限;
[0011]步驟2:根據(jù)步驟I中的每個區(qū)間索引關(guān)鍵字值的上限創(chuàng)建區(qū)間表,所述區(qū)間表管理區(qū)間的動態(tài)劃分,每個區(qū)間內(nèi)索引項最多不超過Size個,在每個區(qū)間內(nèi)建立一個用于存放區(qū)間內(nèi)索引項的二叉排序樹,并設(shè)定二叉排序樹的索引項插入方法;這種存儲方案便于區(qū)間的均衡分裂,實現(xiàn)區(qū)間的動態(tài)劃分;
[0012]步驟3:在每個二叉排序樹中的每個結(jié)點中設(shè)定一個索引項數(shù)組,并設(shè)定索引項數(shù)組中存儲索引項的上限以及索引項存儲的順序,所述索引項存儲的順序按索引項關(guān)鍵字從小到大的順序從左至右依次存儲;這就提高了存儲密度,也減小了二叉排序樹的高度,對二叉排序樹的調(diào)整頻率遠(yuǎn)低于傳統(tǒng)的平衡二叉樹構(gòu)造過程中的調(diào)整頻度,有效地提高了排序的效率;
[0013]步驟4:讀取索引文件的數(shù)據(jù),根據(jù)索引項關(guān)鍵字的值在區(qū)間表中查詢區(qū)間,將讀取的索引項按照步驟2中設(shè)定的二叉排序樹的索引項插入方法插入到對應(yīng)區(qū)間的二叉排序樹上;
[0014]步驟5:按照區(qū)間的順序?qū)γ總€區(qū)間中相應(yīng)的二叉排序樹進(jìn)行中序遍歷,同時對每個結(jié)點中的索引項數(shù)組順序讀取,并將讀取的結(jié)果保存在排序文件中。
[0015]進(jìn)一步,所述二叉排序樹的索引項插入方法為:
[0016]步驟201:判斷查詢到的區(qū)間內(nèi)是否已滿,如果區(qū)間已滿,在查詢到的區(qū)間的右側(cè)創(chuàng)建一個新的區(qū)間,將原區(qū)間中的二叉排序樹的右子樹從原二叉排序樹中分裂出來并移至新的區(qū)間中,同時將原二叉排序樹的樹根移至其左子樹的右脊梁的末端,并根據(jù)平衡要求調(diào)整二叉排序樹,這就實現(xiàn)了區(qū)間的均衡分裂,也就是進(jìn)行區(qū)間的動態(tài)劃分;如果查找到的區(qū)間未滿,則進(jìn)行下一步操作;
[0017]步驟202:將讀取的索引項的索引關(guān)鍵字的值與二叉排序樹的樹根中存儲的索引關(guān)鍵字值進(jìn)行比較,如果讀取的索引項的索引關(guān)鍵字值比二叉排序樹的樹根中的索引項數(shù)組中最左端的索引關(guān)鍵字的值小,則將讀取的索引項遞歸地插入到二叉排序樹的左子樹中;相反,如果讀取的索引關(guān)鍵字值比二叉排序樹的樹根中的索引項數(shù)組中最右端的索引關(guān)鍵字的值大,則將讀取的索引項值遞歸地插入到二叉排序樹的右子樹中;如果讀取的索引關(guān)鍵字的值介于索引項數(shù)組中最左端的索引關(guān)鍵字的值和最右端的索引關(guān)鍵字的值之間,查看二叉排序樹的樹根中設(shè)置的索引項數(shù)組中存儲的數(shù)據(jù)是否已滿,如果未滿,則按照索引項存儲的順序?qū)⒆x取索引項插入到索引項數(shù)組中;如果已滿,則將二叉排序樹的樹根進(jìn)行結(jié)點分裂,產(chǎn)生一個新結(jié)點,把索引項數(shù)組中左半邊索引項留在原結(jié)點,右半邊索引項存儲到新結(jié)點中;如果左子樹中存儲的索引項數(shù)多于右子樹中存儲的索引項數(shù),則將新結(jié)點移至根的右子樹的左脊梁的末端,否則將原結(jié)點移至根的左子樹的右脊梁的末端。其中,將索引項數(shù)組中存儲的索引項從中間平均分成左右兩組,其中左邊的一組稱為索引項數(shù)組中左半邊索引項,右邊一組稱為索引項數(shù)組中右半邊索引項。
[0018]更進(jìn)一步,所述步驟201中根據(jù)平衡要求調(diào)整二叉排序樹的方法為:如果二叉排序樹的左子樹上存儲的索引項的數(shù)量大于二叉排序樹的右子樹存儲的索引項的數(shù)量與兩倍的索引項數(shù)組中存儲索引項的上限之和,就將二叉排序樹的左子樹的右脊梁末端結(jié)點做二叉排序樹的根,將原根移至其右子樹的左脊梁的末端;如果二叉排序樹的的右子樹上存儲的索引項的數(shù)量大于二叉排序樹的左子樹存儲的索引項的數(shù)量與兩倍的索引項數(shù)組中存儲索引項的上限之和,就將二叉排序樹的右子樹的左脊梁末端結(jié)點做二叉排序樹的根,將原根移至其左子樹的右脊梁的末端。這就保證了二叉排序樹的有序性和平衡性。
[0019]工作原理:本發(fā)明采用分治的思想按索引的關(guān)鍵字對索引數(shù)據(jù)進(jìn)行動態(tài)地分區(qū)排序,對每個分區(qū)內(nèi)的索引數(shù)據(jù),采用類似于平衡二叉樹的方法組成一棵由具有多關(guān)鍵字的結(jié)點構(gòu)成的二叉排序樹。在讀入數(shù)據(jù)的同時進(jìn)行排序,每讀入一個索引項,就按索引項關(guān)鍵字值放入相應(yīng)的區(qū)間進(jìn)行排序,數(shù)據(jù)讀入完成,排序也就完成了,一次讀入即可完成排序。讀完了數(shù)據(jù)只要按分區(qū)順序?qū)ο鄳?yīng)的二叉排序樹進(jìn)行中序遍歷就得到了排序結(jié)果。
[0020]有益效果:與現(xiàn)有技術(shù)相比,本發(fā)明在高配置的計算機(jī)系統(tǒng)上使用,充分發(fā)揮計算機(jī)的性能,以分治的思想,結(jié)合順序存儲和鏈?zhǔn)酱鎯Φ膬?yōu)點,更加符合大數(shù)據(jù)算法復(fù)雜性要求。本發(fā)明克服了傳統(tǒng)的內(nèi)排序算法不適合處理大量數(shù)據(jù)的不足,也不必像一般的外排序算法那樣需要多次的文件讀、寫。采用本發(fā)明進(jìn)行索引排序有效提高了算法的效率。本發(fā)明可以直接應(yīng)用到大型數(shù)據(jù)庫上,或者被互聯(lián)網(wǎng)大公司直接采用,在分布式環(huán)境下也可以作為一種高效的內(nèi)排序算法。
【專利附圖】

【附圖說明】·
[0021]圖1為本發(fā)明的流程圖;
[0022]圖2為本發(fā)明中涉及的二叉排序樹的結(jié)構(gòu)示意圖。
【具體實施方式】
[0023]下面對本發(fā)明技術(shù)方案進(jìn)行詳細(xì)說明,但是本發(fā)明的保護(hù)范圍不局限于所述實施例。
[0024]如圖1所示,本發(fā)明提供了一種大數(shù)據(jù)索引的排序方法,包括以下步驟:
[0025]步驟1:根據(jù)索引關(guān)鍵字的取值范圍將索引初始劃分為Size/Alpha個區(qū)間;其中,
Size為規(guī)??刂茀?shù),Size=^N,N是索引項的總數(shù),Alpha為索引項關(guān)鍵字的分布密度差
異系數(shù),對于均勻分布Alpha取值為I,正態(tài)分布Alpha取值可以為2~10。同時根據(jù)索引項的取值范圍和劃分的區(qū)間數(shù)平均設(shè)定每個區(qū)間索引關(guān)鍵字值的上限;
[0026]步驟2:構(gòu)造一個區(qū)間表來管理區(qū)間的劃分及排序工作,對每個區(qū)間構(gòu)造一個表項,相應(yīng)每個區(qū)間有一個二叉排序樹存放具體的區(qū)間內(nèi)數(shù)據(jù)。這樣使得區(qū)間表可以常駐內(nèi)存,每棵二叉排序樹即使不能常駐內(nèi)存也由于其小于一個虛擬內(nèi)存的頁面大小而可以減少換入、換出的次數(shù),每個區(qū)間內(nèi)存儲的索引項的個數(shù)的最大值為Size ;
[0027]其中,二叉排序樹如圖2所示,圖中,A為整個二叉排序樹的樹根,結(jié)點B、D、E、H、I和J組成了 A的左子樹,結(jié)點C、F、G、K、L和M組成了 A的右子樹,結(jié)點A、B、D和H組成了二叉排序樹的左脊梁,結(jié)點B、E和J組成了 A的左子樹的右脊梁,結(jié)點C、F和K組成了 A的右子樹的左脊梁,結(jié)點J為A的左子樹的右脊梁的末端,結(jié)點K為A的右子樹的左脊梁的末端。
[0028]對于每個區(qū)間的排序則原則上按照二叉排序樹的思想來建構(gòu)一棵二叉排序樹,這樣在區(qū)間分裂的時候就十分方便。無疑建構(gòu)平衡的二叉排序樹對于將區(qū)間平均一分為二是有益的,但鑒于傳統(tǒng)的平衡二叉樹存儲密度小,在建構(gòu)的過程中需要不停的對樹進(jìn)行局部調(diào)整,且在大數(shù)據(jù)的背景下其高度太大,本發(fā)明提供了一種新的結(jié)點結(jié)構(gòu),除了左、右子樹的指針域,每個結(jié)點中包括一個存儲多個索引項的索引項數(shù)組,也就是說每個結(jié)點可以存儲多個索引項。
[0029]步驟3:在每個二叉排序樹中的每個結(jié)點中設(shè)定一個索引項數(shù)組,并設(shè)定索引項數(shù)組中存儲索引項的上限為Beta,以及索引項存儲的順序,其中,索引項存儲的順序按索引項關(guān)鍵字從小到大的順序從左至右依次存儲;這樣可以提高存儲密度并減小樹的高度;因直接插入排序在數(shù)據(jù)量不超過20時效率最高,所以取Beta=20。
[0030]在算法運(yùn)行過程中要保持每個結(jié)點索引項數(shù)組中的數(shù)據(jù)有序,該有序性由傳統(tǒng)的直接插入排序來完成,并且其左、右子樹上的索引項數(shù)基本平衡,為保持左、右子樹的平衡,二叉排序樹也要做適當(dāng)?shù)恼{(diào)整,由于每個結(jié)點可存放多個數(shù)據(jù)項,因此其調(diào)整的頻率遠(yuǎn)遠(yuǎn)低于傳統(tǒng)的平衡二叉樹構(gòu)造過程中的調(diào)整頻度。
[0031]步驟4:讀取索引文件的數(shù)據(jù),根據(jù)索引項關(guān)鍵字的值在區(qū)間表中查詢區(qū)間,將讀取的索引數(shù)據(jù)按照步驟2中設(shè)定的二叉排序樹的索引項插入方法插入到對應(yīng)區(qū)間的二叉排序樹上;其中,二叉排序樹的索引項插入方法為:
[0032]步驟201:判斷查詢到的區(qū)間內(nèi)是否已滿,如果區(qū)間已滿,在查詢到的區(qū)間的右側(cè)創(chuàng)建一個新的區(qū)間,將原區(qū)間中的二叉排序樹的右子樹從原二叉排序樹中分裂出來并移至新的區(qū)間中,同時將原二叉排序樹的樹根移至其左子樹的右脊梁的末端,并根據(jù)平衡要求調(diào)整二叉排序樹;如果查找到的區(qū)間未滿,則進(jìn)行下一步操作;
[0033]其中,根據(jù)平衡要求調(diào)整二叉排序樹的方法為:如果二叉排序樹的左子樹上存儲的數(shù)據(jù)量大于二叉排序樹的右子樹存儲的數(shù)據(jù)量與兩倍的索引項數(shù)組中存儲索引項的上限之和,就將二叉排序樹的左子樹的右脊梁末端結(jié)點做二叉排序樹的根,將原根移至其右子樹的左脊梁的末端;如果二叉排序樹的的右子樹上存儲的數(shù)據(jù)量大于二叉排序樹的左子樹存儲的數(shù)據(jù)量與兩倍的索引項數(shù)組中存儲索引項的上限之和,就將二叉排序樹的右子樹的左脊梁末端結(jié)點做二叉排序樹的根,將原根移至其左子樹的右脊梁的末端。
[0034]步驟202:將讀取的索引項的索引關(guān)鍵字的值與二叉排序樹的樹根中存儲的索引關(guān)鍵字值進(jìn)行比較,如果讀取的索引項的索引關(guān)鍵字值比二叉排序樹的樹根中的索引項數(shù)組中最左端的索引關(guān)鍵字的值小,則將讀取的索引項遞歸地插入到二叉排序樹的左子樹中;相反,如果讀取的索引關(guān)鍵字值比二叉排序樹的樹根中的索引項數(shù)組中最右端的索引關(guān)鍵字的值大,則將讀取的索引項值遞歸地插入到二叉排序樹的右子樹中;如果讀取的索引關(guān)鍵字的值介于索引項數(shù)組中最左端的索引關(guān)鍵字的值和最右端的索引關(guān)鍵字的值之間,查看二叉排序樹的樹根中設(shè)置的索引項數(shù)組中存儲的數(shù)據(jù)是否已滿,如果未滿,則按照索引項存儲的順序?qū)⒆x取索引項插入到索引項數(shù)組中;如果已滿,則將二叉排序樹的樹根進(jìn)行結(jié)點分裂,產(chǎn)生一個新結(jié)點,把索引項數(shù)組中左半邊索引項留在原結(jié)點,右半邊索引項存儲到新結(jié)點中;如果左子樹中存儲的索引項數(shù)多于右子樹中存儲的索引項數(shù),則將新結(jié)點移至根的右子樹的左脊梁的末端,否則將原結(jié)點移至根的左子樹的右脊梁的末端。此種調(diào)整的目的是要保持一棵二叉樹上左、右子樹上的數(shù)據(jù)量基本相等,采用這種二叉排序樹調(diào)整方法能夠在最小的調(diào)整幅度下調(diào)整二叉排序樹。
[0035]步驟5:按照區(qū)間的順序?qū)γ總€區(qū)間中相應(yīng)的二叉排序樹進(jìn)行中序遍歷,同時對每個結(jié)點中的索引項數(shù)組順序讀取,并將讀取的結(jié)果保存到排序文件中。
[0036]對于未來增加的索引項只要按其關(guān)鍵字值運(yùn)用折半查找的方法放入相應(yīng)的區(qū)間排序即可,這樣就實現(xiàn)了增量式排序。
[0037]在本發(fā)明提供的方法中,在區(qū)間表搜索階段:除對
【權(quán)利要求】
1.一種大數(shù)據(jù)索引的排序方法,其特征在于:包括以下步驟: 步驟1:根據(jù)索引關(guān)鍵字的取值范圍將索引初始劃分為Size/Alpha個區(qū)間,其中,
2.根據(jù)權(quán)利要求1所述的一種大數(shù)據(jù)索引的排序方法,其特征在于:所述步驟2中二叉排序樹的索引項插入方法為: 步驟201:判斷查詢到的區(qū)間內(nèi)是否已滿,如果區(qū)間已滿,在查詢到的區(qū)間的右側(cè)創(chuàng)建一個新的區(qū)間,將原區(qū)間中的二叉排序樹的右子樹從原二叉排序樹中分裂出來并移至新的區(qū)間中,同時將原二叉排序樹的樹根移至其左子樹的右脊梁的末端,并根據(jù)平衡要求調(diào)整二叉排序樹;如果查找到的區(qū)間未滿,則進(jìn)行下一步操作; 步驟202:將讀取的索引項的索引關(guān)鍵字的值與二叉排序樹的樹根中存儲的索引關(guān)鍵字值進(jìn)行比較,如果讀取的索引項的索引關(guān)鍵字值比二叉排序樹的樹根中的索引項數(shù)組中最左端的索引關(guān)鍵字的值小,則將讀取的索引項遞歸地插入到二叉排序樹的左子樹中;相反,如果讀取的索引關(guān)鍵字值比二叉排序樹的樹根中的索引項數(shù)組中最右端的索引關(guān)鍵字的值大,則將讀取的索引項值遞歸地插入到二叉排序樹的右子樹中;如果讀取的索引關(guān)鍵字的值介于索引項數(shù)組中最左端的索引關(guān)鍵字的值和最右端的索引關(guān)鍵字的值之間,查看二叉排序樹的樹根中設(shè)置的索引項數(shù)組中存儲的數(shù)據(jù)是否已滿,如果未滿,則按照索引項存儲的順序?qū)⒆x取索引項插入到索引項數(shù)組中;如果已滿,則將二叉排序樹的樹根進(jìn)行結(jié)點分裂,產(chǎn)生一個新結(jié)點,把索引項數(shù)組中左半邊索引項留在原結(jié)點,右半邊索引項存儲到新結(jié)點中;如果左子樹中存儲的索引項數(shù)多于右子樹中存儲的索引項數(shù),則將新結(jié)點移至根的右子樹的左脊梁的末端,否則將原結(jié)點移至根的左子樹的右脊梁的末端。
3.根據(jù)權(quán)利要求2所述的一種大數(shù)據(jù)索引的排序方法,其特征在于:所述步驟201中根據(jù)平衡要求調(diào)整二叉排序樹的方法為:如果二叉排序樹的左子樹上存儲的索引項的數(shù)量大于二叉排序樹的右子樹存儲的索引項的數(shù)量與兩倍的索引項數(shù)組中存儲索引項的上限之和,就將二叉排序樹的左子樹的右脊梁末端結(jié)點做二叉排序樹的根,將原根移至其右子樹的左脊梁的末端;如果二叉排序樹的的右子樹上存儲的索引項的數(shù)量大于二叉排序樹的左子樹存儲的索引項的數(shù)量與兩倍的索引項數(shù)組中存儲索引項的上限之和,就將二叉排序樹的右子樹的 左脊梁末端結(jié)點做二叉排序樹的根,將原根移至其左子樹的右脊梁的末端。
【文檔編號】G06F17/30GK103745008SQ201410040926
【公開日】2014年4月23日 申請日期:2014年1月28日 優(yōu)先權(quán)日:2014年1月28日
【發(fā)明者】石冰, 韓立新 申請人:河海大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1