1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.第八章

Chapter 8 堆積 8.1 何謂堆積 8.2 何謂min-heap 8.3 min-maxheap 8.4 Deap 堆積 堆積(Heap)和二元搜尋樹大致上雷同,但有一點點差異。 Heap在分類上大致可分為Max-heap, Min-heap, Min-max heap及Deap。 Heap也可用在排序上,此稱為Heap sort(堆積排序)。 8.1 何謂堆積 何謂堆積(Heap)? 定義如下: 堆積是一棵二元 樹,其樹根的鍵 值大於子樹的鍵 值,而且必須符 合第六章6.2節所 談的完整二元樹。 8.1 何謂堆積 它是一棵Heap,而不是二元搜尋樹。 在調整的過程中有二種方式,一是由上而下,從樹根開始與其子節點相比,若前者大則不用交換,反之,則要交換;以符合父節點大於子節點。 8.1 何謂堆積 此種方法也可以讓子節點先比,找出最大者再與其父節點比,此種方法至多只要做一次對調即可,如下圖23和30中30較大,因此15和30對調。 由於這種方式較快,故若以由上而下調整時,皆以此種方式進行之。 8.1 何謂堆積 一棵Heap不是唯一,因為只要父節點大於子節點即可。 需在此提醒讀者的是,當中間有某些節點互換時,需要再往上相比較,直到父節點大於子節點為止。 8.1 何謂堆積 第二種方法為由下而上,先算出此棵樹的節點數目,假設n,再取其,從此節點,開始與它的最大子節點相比,若最大子節點的鍵值大於父節點之鍵值,則相互對調,一直做到樹根止。 記得相互對調後要往下繼續比較,看看是否還要對調喔! 8.1 何謂堆積 調整的方法如下: step 1:先將每一節點按完整二元樹的順序加以編號如下圖: 8.1 何謂堆積 step 2: ,故從第2節點開始與其較大的子節點相比。由於40比23大,故調換之。 8.1 何謂堆積 step 3:接下來將第1個節點與其較大子 節點比,我們發現40大於15,故調換之,如下圖: 8.1 何謂堆積 step 4:雖然皆已調換完成,但我們發現第2節點小於第4節點(15<23),故需繼續對調,如下圖: 8.1 何謂堆積 8.1.1 Heap的加入 承以上的那一棵Heap,加入30及50。 首先按照完整二元樹的特性將30加進來,如下圖 8.1 何謂堆積 8.1 何謂堆積 因為加入50後不是一棵Heap,所以要加以調整之。 由於原先已是一棵Heap,所以,只要將加入的那一個節點往上調整即可。 8.1 何謂堆積 8.1.2 Heap的刪除 Heap的刪除則將完整二元樹的最後一節點取代被刪除的節點,然後判斷是否為一棵Heap,若否,則再依上述的方法加以調整之。 8.1 何謂堆積 再刪除40 ,則將10取代之。 8.1 何謂堆積 再舉一例,有一棵Heap如下: 8.1 何謂堆積 今欲將40刪除,則以15取代40(因為15在完整二元樹中是最後一個節點) 8.1 何謂堆積 此時將15和其所屬的最大子節點比較,亦即15和35(因為它大於30)比較,直接將15和35交換。 8.2 何謂min-heap 上述介紹的Heap,我們稱之為max-heap,在max-heap樹中的鍵值,一律是上大於下,節點內的鍵值一律大於其子節點。其中min-heap的觀念十分簡單,其節點鍵值一律小於子節點,恰與max-heap相反,如下圖即為一棵min-heap的例子。 8.2 何謂min-heap 由於其加入與刪除的方法與max-heap十分類似,在此就不重覆說明了。 8.3 min-max heap min-max heap包含了min-heap與max-heap兩種Heap的特徵。 8.3 min-max heap 何謂min-max heap:為了方便解說,我們就直接以上圖為例,來定義min-max heap,必須符合下列三項定義: min-max heap是以一層min-heap,一層max-heap交互構成的。 樹中為min-heap的部分,仍需符合min-heap的特性。 樹中為max-heap的部分,仍需符合max-heap的特性。 8.3 min-max heap 8.3.1 min-max heap的加入 min-max heap的加入與max-heap的原理差不多,但是加入後,要調整至符合上述min-max heap的定義。 8.3 min-max heap 若加入5,步驟如下: 8.3 min-max heap 加入後185,不符合第一項定義,將5與18交換。 8.3 min-max heap 交換後,由於105,不符合第二項定義,將5與10

文档评论(0)

busuanzi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档