堆积排序法HeapSort.PPT

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

堆積排序法 (Heap Sort) 堆積 (heap) 是一棵完整二元樹,且規定堆積中每一個父親節點的鍵值皆大於等於其兒子節點的鍵值。 完整二元樹調整為堆積 1. 從二元樹的最後一個父親節點至第一個父親節點(即樹根)逐一作比較。 2. 若父節點比最大子節點小,則彼此交換。 3. 被交換的父親節點,必須重複步驟2的比較,直到不需交換或已無子節點為止。 範例 二元樹若存於陣列a中,則調整成堆積結構的過程如下: 範例(續-1) 範例(續-2) 堆積排序法的運作步驟 假設有n筆資料 1. 將資料視為完整二元樹。 2. 自最後一個父親節點開始 (若有n 個節點,則從第 [n/2] 個節點開始) 將完整二元樹調整成堆積。 3. 將樹根之資料與尚未排序的最後節點交換,則最大鍵值已排序好。 4. 若未排序資料只剩一筆,則排序完成,否則調整樹根節點,使二元樹成為一個堆積,接著重覆步驟3。 例﹕ 若欲排序的鍵值為26 5 77 1 61 4 利用堆積排序法排序。 解: 例 (續) 例 (續) 排序結果:1 4 5 26 61 77 6筆資料要經過5個階段才能完成 * 30 10 7 25 22 20 5 3 1 2 a[1] 8 a[2] 9 a[3] 7 a[4] 13 a[5] 11 a[6] 10 a[7] 12 a[8] 15 8 9 11 7 12 10 13 15 8 4 2 1 5 6 3 7 調整 a[3]節點 a[3] a[7] ? a[3] 與 a[7] 交換 交換後 a[7]無子節點,故停止。 調整 a[4]節點 a[4] a[8] ? a[4] 與 a[8] 交換 交換後 a[8]無子節點,故停止。 說 明 過 程 8 9 11 7 12 10 15 13 8 4 2 1 5 6 3 7 8 9 11 12 7 10 15 13 8 4 2 1 5 6 3 7 調整 a[1]節點 (樹根) a[1] a[2] ? a[1] 與 a[2] 交換 a[2] a[4] ? a[2] 與 a[4] 交換 a[4] a[8] ? a[4] 與 a[8] 交換 交換後a[8]無子節點,故停止。 調整 a[2]節點 a[2] a[4] ? a[2] 與 a[4] 交換 a[4] a[8] ? a[4] 與 a[8] 交換 交換後a[8]無子節點,故停止。 說 明 過 程 8 15 11 12 7 10 13 9 8 4 2 1 5 6 3 7 15 13 11 12 7 10 9 8 8 4 2 1 5 6 3 7 4 61 1 77 5 26 [6] [5] [4] [3] [2] [1] 將初值 26, 5, 77, 1, 61, 4 視為完整二元樹 26 5 61 77 4 1 pass 1: 77 61 5 26 4 1 4 5 1 26 61 77 [6] [5] [4] [3] [2] [1] 調整堆積 樹根與最後節點交換 77 5 1 26 61 4 [6] [5] [4] [3] [2] [1] 4 61 5 26 77 1 77 4 1 26 5 61 [6] [5] [4] [3] [2] [1] pass 2: 調整堆積 樹根與最後節點交換 77 61 1 26 5 4 [6] [5] [4] [3] [2] [1] 61 5 4 26 77 1 4 5 61 26 77 1 例 (續) pass 3: 77 61 1 4 5 26 [6] [5] [4] [3] [2] [1] 77 61 26 4 5 1 [6] [5] [4] [3] [2] [1] 調整堆積 樹根與最後節點交換 26 5 61 4 77 1 1 5 61 4 77 26 例 (續) pass 4: 樹根與最後節點交換 77 61 26 4 1 5 [6] [5] [4] [3] [2] [1] 調整堆積 77 61 26 5 1 4 [6] [5] [4] [3] [2] [1] 5 1 61 4 77 26 4 1 61 5 77 26 例 (續) pass 5: 77 61 26 5 1 4 [6] [5] [4] [3] [2] [1] 調整堆積 77 61 26 5 4 1 [6] [5] [4] [3] [2] [1] 樹根與最後節點交換 4 1 61 5 77 26 1 4 61 5 77 26 *

文档评论(0)

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

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

1亿VIP精品文档

相关文档