moea_joint
112年
[資訊] 計算機原理、網路概論
第 20 題
阿華在設計一個程式,需要一種資料結構,可以一邊新增資料,一邊取出資料,且每次取出的資料都是現有資料中的最大值。您建議阿華使用下列何種資料結構?
- A Array
- B Linked List
- C Queue
- D Heap
思路引導 VIP
如果你有一群數字需要管理,且每當新成員加入時,你都希望「目前最強大」的那一個能立刻站在最顯眼的位置(例如樹根),而不需要每次都大費周章地將所有人重新排隊。你能想到哪一種具備「層級關係」的結構,可以透過簡單的兩兩比較,就讓最大值自動浮現到最頂端嗎?
🤖
AI 詳解
AI 專屬家教
恭喜你精準地鎖定了正確答案!這顯示你對於資料結構的特性,以及它們在實務應用中的效能差異,有著非常清晰且正確的理解。
堆積結構(Heap)的動態管理優勢
這道題目的核心在於處理「動態資料」的效率需求。雖然陣列或鏈結串列也能存儲資料,但若要維持每次取出的都是最大值,往往需要耗費 $O(n)$ 的時間來搜尋或重新排序。而 Heap(堆積) 是一種特殊的完全二元樹,它能確保根節點永遠是整棵樹的最大值(Max Heap)。當我們進行新增或取出操作時,Heap 僅需透過節點的調整,便能在 $O(\log n)$ 的對數時間內恢復平衡,這是其他線性結構難以企及的。
▼ 還有更多解析內容