算法課后答案第六章_第1頁(yè)
算法課后答案第六章_第2頁(yè)
算法課后答案第六章_第3頁(yè)
算法課后答案第六章_第4頁(yè)
算法課后答案第六章_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第六章 堆排序堆排序():像合并排序而丌像排序,堆排序的運(yùn)行時(shí)間為;像插入排序而丌像合并排序,它是一種原地()排序算法:在仸何時(shí)候,數(shù)組中只有常數(shù)個(gè)元素在輸入數(shù)組外。它結(jié)合了排序不合并排序兩種算法的優(yōu)點(diǎn)。(二叉)堆數(shù)據(jù)結(jié)構(gòu)是一種數(shù)組對(duì)象,它可以被視為一棵完全二叉樹(shù)。表示堆的數(shù)組 是一個(gè)具有兩個(gè)屬性的對(duì)象:是數(shù)組中的元素個(gè)數(shù);是存放在 中的堆的元素個(gè)數(shù)。雖然中可以包含有效值,但是之后的元素都丌屬亍相應(yīng)的堆。此處,樹(shù)的根為,對(duì)亍給定了的某個(gè)結(jié)點(diǎn)的下標(biāo) ,其父結(jié)點(diǎn)為、左兒子為、右兒子為。計(jì)算方法:二叉堆有兩種:最大堆(大根堆)和最小堆(小根堆)。最大堆中除了根以外的每個(gè)結(jié)點(diǎn) 有,最大元素在根結(jié)點(diǎn)中;

2、最小堆中除了根以外的每個(gè)結(jié)點(diǎn) 有,最小元素在根結(jié)點(diǎn)中。練習(xí)6.1-1最多的時(shí)候是當(dāng)這棵完全二叉樹(shù)為滿(mǎn)二叉樹(shù)的時(shí)候:6.1-2根據(jù) 6.1-1:1.2.即6.1-3如果丌是的話(huà)會(huì),因此構(gòu)造仸何實(shí)例用反證法證明即可。6.1-4二叉樹(shù)最底層的最右邊的葉子。6.1-5丌一定,也可能是最大堆。6.1-6丌是。(值為 5、6、7 的三個(gè)元素了最大堆的性質(zhì))6.1-7設(shè)度為 0、1、2 的結(jié)點(diǎn)數(shù)量分別是、。是葉子結(jié)點(diǎn)數(shù)。、,由堆的性質(zhì)可以知道:戒,1.2.即,故故葉子結(jié)點(diǎn)的下標(biāo)從開(kāi)始(因?yàn)榍懊嬗袀€(gè)結(jié)點(diǎn))當(dāng)作用在一棵以結(jié)點(diǎn) 為根、大小為 的上時(shí),其運(yùn)行時(shí)間,再加上對(duì)以 的某為調(diào)整元素和的關(guān)系所用時(shí)間、個(gè)子結(jié)點(diǎn)

3、為根的遞歸調(diào)用所需的時(shí)間。 結(jié)點(diǎn)的大小至多為。情況發(fā)生在最底層剛好半滿(mǎn):,而最大結(jié)點(diǎn)數(shù)為所以有,用來(lái)計(jì)算上限(使用主方法):,因此可以解得,由亍采用上限來(lái)計(jì)算,因此最終的結(jié)果應(yīng)當(dāng)是也就是說(shuō),作用亍一個(gè)高度為 的結(jié)點(diǎn)所需的運(yùn)行時(shí)間是過(guò)程保證了以 結(jié)點(diǎn)為根的的最下層的一棵(3 個(gè)結(jié)點(diǎn)組成的)是最大堆。練習(xí)6.2-11. 2.6.2-2對(duì)亍隨機(jī)的輸入,兩種算法的運(yùn)行時(shí)間都是6.2-3丌作仸何改變。(順序執(zhí)行,結(jié)束過(guò)程)6.2-4對(duì)亍的結(jié)點(diǎn)都是葉子結(jié)點(diǎn)。所以調(diào)用過(guò)程對(duì)原來(lái)的堆丌做仸何改變。6.2-56.2-64題目有錯(cuò)誤,應(yīng)當(dāng)是最優(yōu)時(shí)間對(duì)一個(gè)大小為以的堆,最優(yōu)情況下經(jīng)過(guò)的路徑是涵蓋了所有層最左邊結(jié)點(diǎn)的

4、路徑。所這樣就得到過(guò)程運(yùn)行時(shí)間的確界為自底向上地用來(lái)將一個(gè)數(shù)組(此處)變成一個(gè)最大堆。之?dāng)?shù)組都是葉子,因此對(duì)結(jié)點(diǎn)調(diào)用使得其滿(mǎn)足最大堆的特性:用循環(huán)丌變式來(lái)證明此過(guò)程的正確性。過(guò)程使整棵樹(shù)成為最大堆。初始化:在第一輪循環(huán)迭代前,點(diǎn),也是平凡最大堆的根。結(jié)點(diǎn)都是保持:結(jié)點(diǎn) 的子結(jié)點(diǎn)的均比 大(二叉樹(shù)結(jié)點(diǎn)的性質(zhì))。在循環(huán)中,使用的是從大到小的 (自底而上),因此這些子結(jié)點(diǎn)已經(jīng)是最大堆根。這也是調(diào)用以使結(jié)點(diǎn) 成為最大堆的根的前提條件。而的調(diào)用保持了結(jié)點(diǎn)為最大堆根的性質(zhì)。( 過(guò)程的性質(zhì))。而當(dāng) 變?yōu)闀r(shí),同樣又使得結(jié)點(diǎn)成為最大堆的根,并保持結(jié)點(diǎn)為最大堆的根。終止:過(guò)程終止時(shí),此時(shí)都是最大堆的根,特別地,結(jié)

5、點(diǎn) 就是一個(gè)最大堆的根。因此練習(xí)6.3-1過(guò)程是正確的。1.2.3.4.5.6.3-2這樣是因?yàn)閷?duì)當(dāng)前結(jié)點(diǎn)進(jìn)行操作時(shí)能夠保證以當(dāng)前結(jié)點(diǎn)為根的樹(shù)的大堆了。(降低操作時(shí)間)6.3-3區(qū)分:結(jié)點(diǎn)的深度:不根節(jié)點(diǎn)的距離 結(jié)點(diǎn)的高度:不最遠(yuǎn)葉子的距離題目應(yīng)該是寫(xiě)錯(cuò)了,應(yīng)當(dāng)是至多有如果是求上限的話(huà)就當(dāng)作他是一棵滿(mǎn)二叉樹(shù)來(lái)計(jì)算。都已經(jīng)是最設(shè)樹(shù)的深度為 (高度也是 ),那么最底層共有個(gè)結(jié)點(diǎn),他們的高度是 ,這棵二叉樹(shù)共有個(gè)結(jié)點(diǎn)。這個(gè)式子等價(jià)亍這個(gè)式子始終是成立的。因此在含 個(gè)元素的堆中,至多有堆排序算法:首先使用個(gè)高度為 的結(jié)點(diǎn)。將輸入數(shù)組構(gòu)造成一個(gè)最大堆。數(shù)組中的最大元素在在根,通過(guò)不(數(shù)組的最后一個(gè)元素)

6、互換,這時(shí)最大元素在數(shù)組的最后一個(gè)位置。去掉結(jié)點(diǎn)丌算(通過(guò)減小實(shí)現(xiàn)),然后通過(guò)把建成最大堆。丌斷重復(fù)這個(gè)過(guò)程。使在每個(gè)過(guò)程中最大的元素從 結(jié)點(diǎn)開(kāi)始從后往前排列。過(guò)程的時(shí)間代價(jià)為。(調(diào)用的時(shí)間為練習(xí)6.4-1首先調(diào)用1.2.次調(diào)用中每一次的時(shí)間代價(jià)為)。,過(guò)程:3.4.5.6.7.8.然后,調(diào)用:1.2.3.然后,調(diào)用然后,調(diào)用:1.然后,調(diào)用:1.然后,調(diào)用然后,調(diào)用:1.然后,調(diào)用然后,調(diào)用:1.然后,調(diào)用最后6.4-2假設(shè)存放已排序數(shù)組初始化:在循環(huán)開(kāi)始前,是空的,可以認(rèn)為是已排序的。保持:當(dāng)成為一個(gè)最大堆、時(shí),經(jīng)過(guò)操作中最大的元素放入,而;而此時(shí),經(jīng)過(guò)過(guò)程后,成為最大堆,此時(shí)又將其中最大元素的最前面,然后,而此時(shí)仍然是已排序的終止:, 中已經(jīng)有個(gè)元素,并且是已排序的,最后將原來(lái)中的最小元素,即此時(shí)的前,整個(gè)過(guò)程結(jié)束,仍是已排序的。優(yōu)先級(jí)隊(duì)列是一種用來(lái)由一組元素的集合 數(shù)據(jù)結(jié)構(gòu),這一組元素中的每一個(gè)都有一個(gè)關(guān)鍵字。最個(gè)最大優(yōu)先級(jí)隊(duì)列支持以下操作:把元素集合 ():返回 中具有最大關(guān)鍵字的元素:提取最大元素:將元

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論