阿摩線上測驗 登入

申論題資訊

試卷:97年 - 097年地方3等資料結構#48965
科目:公職◆資料結構
年份:97年
排序:0

題組內容

一、heap sort 是一個有名的排序演算法。請回答下列問題:

申論題內容

⑵ heap sort 通常使用 heap 的樹狀示意圖(如上圖)來表示其執行的過程。但在實 作 heap sort 的程式時,我們通常並不使用二元樹(binary tree)的資料結構來存 放其資料,而改採用另一種資料結構,請問是那一種資料結構?它是如何存資料 的?(5 分)

詳解 (共 1 筆)

詳解 提供者:114年高考上榜

Heap 是一種完全二元樹(Complete Binary Tree),並且具有一個特殊的性質:每個節點的值都必須大於等於(或小於等於)其子節點的值。這種性質稱為「堆積性質」(Heap Property)。

 
Heap 可以使用一個一維陣列來實現,並且通常使用以下的方式來存放資料:
 
將資料依序存放在陣列的 index 1 到 n 的位置中,其中 n 為資料的總數。
如果某個節點的 index 為 i,則其左子節點的 index 為 2i,右子節點的 index 為 2i+1。
父節點的 index 為 i/2(向下取整)。
使用 Heap 可以快速地找到最大值或最小值,並且可以在 O(log n) 的時間內執行插入或刪除操作,因此 Heap 被廣泛地應用於排序算法中,如 Heap Sort 和優先級佇列(Priority Queue)。