




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第六章堆排序堆排(.heapsort).像合并排序而不像插入排序,堆排序的運(yùn)行時間為0(幾仗,);像插入排序而不像合并排序,它是一種原地(粗必心)排序算法:在任何時候,數(shù)組中只有常數(shù)個元素在輸入數(shù)組外。它結(jié)合了插入排序與合并排序兩種算法的優(yōu)點(diǎn)。(二叉)堆數(shù)據(jù)結(jié)構(gòu)是一種數(shù)組對象,它可以被視為一棵完全二叉樹。表示堆的數(shù)組月是一個具有兩個屬性的對象:血初川人是數(shù)組中的元素個數(shù);heap-s訟園是存放在力中的堆的元素個數(shù)。雖然川1血/川A中可以包含有效值,但是人險側(cè)-sizeA_后的元素都不屬于相應(yīng)的堆。此處/比sizeAlen(jthA,樹的根為川1,對于給定了的某個結(jié)點(diǎn)的下標(biāo)”,其父結(jié)點(diǎn)為PARE
2、NT(i)、左兒子為LEFT、右兒子為RJGHT。計算方法:Parent(z)returnZ/2JLeft)return2iRight(z)return2i+1二叉堆有兩種:最大堆(大根堆)和最小堆(小根堆X最大堆中除了根以外的每個結(jié)點(diǎn)APARENT(i)2曲,最大元素在根結(jié)點(diǎn)中;最小堆中除了根以外的每個結(jié)點(diǎn)iAPARF;NT(i)Ai,最小元素在根結(jié)點(diǎn)中。練習(xí)1最多的時候是當(dāng)這棵完全二叉樹為滿二叉樹的時候:2宀-1最少的時候是當(dāng)這棵完全二叉樹的最后一層只有一個葉子的時候:2-1+1=D2根據(jù)6.1-1:2ynw2/,+1-1L2*n=hQgnnW2h+1一1二”?lg(zt+1)-1Ign-
3、1lgn1hHj+n-2=r“nZ.n=1n4-zi2=Yl卩/艮卩1+722=-OfZZi+仇2=/故九1十刃2=故葉子結(jié)點(diǎn)的下標(biāo)從山/2+1開始(因為前面有M2個結(jié)點(diǎn))Max-Heafify(人2)ILEFT(i.)廠RIGHT)ifIheapsizeAandAlAiTOC o 1-5 h zthenlargestIelselargestAlar(jestthenlargestLriflargest豐ithenexchangeAioAl.ar(jest1()MMX-HEAPIFY(A.largest)當(dāng)MAX-IIEAPIFY作用在一棵以結(jié)點(diǎn)?為根、大小為n的子樹上時,其運(yùn)行時間為調(diào)整元素
4、冊、ALEFT(i)和的關(guān)系所用時間,再加上對以,的某個子結(jié)點(diǎn)為根的子樹遞歸調(diào)用M朮X-HEAPJFY所需的時間。,結(jié)點(diǎn)的子樹大小至多為277/3。最壞情況發(fā)生在最底層剛好半滿:n=2人一1+2“x舟,而最大子樹結(jié)點(diǎn)數(shù)為2】-1+22-1+2辦-】=2“一13-22;所以有切WT(2n/3)十(4(1),用T(n)=T(2n/:i)+曰(1床計算上限(使用主方法):6(卅叫)=e(n)=e(l)J(n)=0(1),因此可以解得T.)=G(d糾lgn)=e(lgn)由于我們采用上限來計算,因此最終的結(jié)果應(yīng)當(dāng)是T(n)=0血町也就是說,MAX-HEAPIFY作用于一個高度為加勺結(jié)點(diǎn)所需的運(yùn)行時間是
5、(心)MAX-“亦円“S過程保證了以,結(jié)點(diǎn)為根的子樹的最下層的一棵子樹(3個結(jié)點(diǎn)組成的子樹)是最大堆。練習(xí)1A=A=A=2MlN-HEAPIFY(/tZ)HEFT(i)rRIGHT(i)ifIheapsizeAand4/AithensmallestIelsesmallestzifrheapsizeAandArAsmallestthensmallestheap-s仏州/2的結(jié)點(diǎn)都是葉子結(jié)點(diǎn)。所以調(diào)用-過程對原來的堆不做任何改變。5Max-Heapify(4,i)whileTRUEdo/AithenlargestIelselargestAlar(jestthenlargestriflargest/
6、ithenexcfiangeAiAlar(jest6題目有錯誤,應(yīng)當(dāng)是最優(yōu)時間Q(lgn)對一個大小為“的堆,最優(yōu)情況下經(jīng)過的路徑是涵蓋了所有層最左邊結(jié)點(diǎn)的路徑。所以0(1)xQ(lgn)=Q(lgn)這樣就得到*X-丫過程運(yùn)行時間的確界為e(lgn)自底向上地用MMX-HEAPIFY個數(shù)組川1.n(此處=lenylhA)變成個最大堆。之?dāng)?shù)組A(n/2+1).7禪是葉子,因此對內(nèi)部結(jié)點(diǎn)川1.W/2調(diào)用MAX-HEAPIFY使得其滿足最大堆的特性:Build-Max-Heap(/4)heapsizeAlen(jthAforil.e.n(jtb.A/2downto1doMAX-HEAPIFY(A,
7、i)用循環(huán)不變式來證明此過程的正確性。BUILD-MAX-過程使整棵樹成為最大堆。初始化:在策一輪循環(huán)迭代前,i=bV2jo結(jié)點(diǎn)川/2+1,n/2十2,申都是葉結(jié)點(diǎn),也是平凡最大堆的根。保持:結(jié)點(diǎn),的子結(jié)點(diǎn)的編號均比,大(二叉樹結(jié)點(diǎn)編號的性質(zhì)X在循壞中,使用的是從大到小的“(自底而上),因此這些子結(jié)點(diǎn)已經(jīng)是最大堆根。這也是調(diào)用MAX-HEAPJFY(AX點(diǎn)減為最大堆的根的前提條件。而MAX-IIEAPIFY的調(diào)用保持了結(jié)點(diǎn)+1/+2,,加為最大堆根的性質(zhì)。(MAX-IIEAPIFY.程的性質(zhì)X而當(dāng)?變?yōu)锳1時,同樣又使得;-1結(jié)點(diǎn)成為最大堆的根,并保持譏十1.八結(jié)點(diǎn)為最大堆的根。終止:過程終止
8、時/=0,此時1.2.,沢都是最大堆的根,特別地,結(jié)點(diǎn)1就是一個最大堆的根。因此I3UILD-過程是正確的。練習(xí)1A=A=5,3,17,22,84,19,6,10,9A=A=A=A=2這樣是因為對當(dāng)前結(jié)點(diǎn)進(jìn)行操作時能夠保證以當(dāng)前結(jié)點(diǎn)為根的樹的子樹都已經(jīng)是最大堆了。(降低操作時間)3區(qū)分:結(jié)點(diǎn)的深度:與根節(jié)點(diǎn)的距離結(jié)點(diǎn)的高度:與最遠(yuǎn)葉子的距離題目應(yīng)該是寫錯了,應(yīng)當(dāng)是至多有皿/2葉如果是求上限的話就當(dāng)作他是一棵滿二叉樹來計算。設(shè)樹的深度為力(高度也是力),那么最底層共有滬個結(jié)點(diǎn),他們的高度是0,這棵二叉樹共有2*1-1個結(jié)點(diǎn)。(2/,+1-1)/2十1W2h(2fe+1-1)/20+1+1這個式子
9、等價于這個式子始終是成立的。因此在含72個元素的堆中,至多有陽2宀個高度為加勺結(jié)點(diǎn)。堆排序算法:數(shù)組的最后一個位首先使用BUILD-MAX-Q4P將輸入數(shù)組.11.川構(gòu)造成一個最大堆。數(shù)組中的最大元素在在根川1,通過與川訶(數(shù)組的最后一個元素)互換,這時最大元素在去掉結(jié)點(diǎn)門不算(通過減小吐切-s讓e/實現(xiàn)),然后通過MAX-HEAPIFY(A.V)iGAl.n-1建成最大堆。不斷重復(fù)這個過程。使在每個過程中最大的元素從結(jié)點(diǎn)開始從后往前排列。Heapsort(A)BUILD-MAX-HEAP(A)forilen()thAdownto2doexcliangeoAiheapsizeAheapsize
10、A1MAX-HEAPTFY(A,1)HEAPSORT的時間代價為Ofnlgrz)。(調(diào)用BUILD-MAX-HE/W的時間為n-詼HEAP-MAX-HEAPIFY調(diào)用中每一次的時間代價為O(lgn)練習(xí)1首先調(diào)用BUILD一MAX一刃E4P過程:A=A=A=八寸ddd.od.rd沁VHyz二mwdygHIXP/V旺嬰.A囲VHP、八pgK02000ECOIApquoo.omgzv丄、00AhoodI-T2”g.ON.3.gzv;卜Ahood02”g.ON.3.gzv;.9AhoodI-T2”2oz.巳將VH一、sAhoo.z.2J2”2ozloVH一、.寸Am”mzlov丄、mEOPUSE6=
11、2IS6UZili回咪呂堅1迴展蚩H3Ixp/v旺AgmmQOvn/nVH一、Apgunyr-i二I)fxy富旺嬰A8O302VHP、HyA寸.gd002.2VHyr-i二I)AJ7dp4HIxy/v旺AgmVHP.八寸&72200(I)HVSHIxp、/v旺嬰、A8ocVH、y、d&.A000VH一、Apgd.H200-lVHy.m此筆記尚未定稿如果問題和建議請聯(lián)系zhangshuijing歡迎指教A=,Af=,調(diào)用MAX一HEAPIFY(AA):1.A=然后A=,Af=,調(diào)用MAX一HEAPIFY(AA)然后A=,Af=5,7,8,13,17,20,25,調(diào)用MAX-HEAPIFY(AA)
12、:1.A=然后A=,調(diào)用MSXHEAPIFY(AA)最后A!=2假設(shè)力存放已排序數(shù)組初始化:在循環(huán)開始前,幻是空的,可以認(rèn)為是已排序的。保持:當(dāng),4成為一個最大ift.heap-曲麗=時,經(jīng)過操作月中最大的元素川1放KA,而heapsizeA=n1;而此時,經(jīng)過MAXHEAPIFY(4:1)過程后,A.n-1咸為最大堆,此時又將其中最大元素川1插入幻的最前面,然后heap-sizeA=n-2,而此時幻仍然是已排序的終止:heapsizeA=1,幻中已經(jīng)有1個兀素,并且是已排序的,最后將原來4中的最小元素,即此時的川1睛入力前,整個過程結(jié)束,川仍是已排序的。優(yōu)先級隊列是一種用來維護(hù)由一組元素構(gòu)成
13、的集合S數(shù)據(jù)結(jié)構(gòu),這一組元素中的每一個都有一個關(guān)鍵字辰么最個最大優(yōu)先級隊列支持以下操作:INSERTSx):把元素丿插入集合S(SSU;r)MAXIMUM(S):返回S中具有最大關(guān)鍵字的元素EXTRACT-MAX(S):提取最大元素INCREASE-KEY(S.k)將元素/關(guān)鍵字值增加至!U人值不能小于原關(guān)鍵字值。最大優(yōu)先級隊列的一個應(yīng)用是在一臺分時計算機(jī)上進(jìn)行作業(yè)調(diào)度。最小優(yōu)先級隊列支持的操作包括INSERT,MINIMUM,EXTRACT-MINQDECREASE-KEY。這種隊列可被用在基于事件驅(qū)動的模擬器中。優(yōu)先級隊列可以用堆來實現(xiàn)。IIeap-Maximum(4)returnAlHeap-Extract-Max(A)ifheapsizeA1thenerrorheapunderflowmaxAl/11A!ieapsizeAheapsizeAheapsizeA1MAX-HEAPIFY(A.l)return
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)職業(yè)經(jīng)理人考試中的決策能力要求試題及答案
- 2025年證券從業(yè)資格證考試關(guān)注試題及答案
- 回顧2025年證券從業(yè)資格證考試試題及答案
- 銀行從業(yè)資格考試的市場格局試題及答案
- 火力發(fā)電廠施工中的安全生產(chǎn)費(fèi)用預(yù)算與使用考核試卷
- 筆的筆身植物種植設(shè)計考核試卷
- 玻璃模具設(shè)計與應(yīng)用考核試卷
- 2025年【工具鉗工(初級)】考試題及答案
- 2023年中國鋼研春季校園招聘開啟筆試參考題庫附帶答案詳解
- 牲畜屠宰業(yè)質(zhì)量安全管理與提升策略考核試卷
- 期中模擬測試卷(試卷)-2023-2024學(xué)年一年級下冊數(shù)學(xué)人教版
- 民宿服務(wù)培訓(xùn)課件
- 公路養(yǎng)護(hù)安全意識培訓(xùn)
- 控制性詳細(xì)規(guī)劃城市用地分類和代號
- 鐵路專用線設(shè)計規(guī)范(試行)(TB 10638-2019)
- 主題一+鞋子擦洗自己做+第二課時(課件)-甘肅教育出版社勞動三年級+下冊
- ISO 45003-2021職業(yè)健康安全管理-工作中的心理健康安全-社會心理風(fēng)險管理指南(中文版)
- 三年級語文 寫通知(全國一等獎)
- 2020電網(wǎng)技術(shù)改造工程概算定額第五冊調(diào)試工程
- 起重機(jī)機(jī)械金屬結(jié)構(gòu)
- 自然教育課程的追尋與實踐
評論
0/150
提交評論