免費開始練習
地特三等申論題 111年 [資訊處理] 資料結構

第 一 題

📖 題組:
二元堆積(Binary Heap)是一種優先佇列(Priority Queue),主要用來管理具有優先權順序的資料物件,每個資料物件具有一個可以界定大小或前後順序的鍵值(Key),我們在此假設鍵值越低的資料物件有越高的優先權。
📝 此題為申論題,共 3 小題

小題 (一)

請完整描述最小堆積(Min_Heap)的定義與相關的操作功能。(5 分)

思路引導 VIP

看到「Min_Heap」應立即拆解為兩部分作答:先點出其兩大核心定義(結構性質為完全二元樹、順序性質為父節點小於等於子節點);接著列出優先佇列必備的核心操作(Insert、Extract-Min、Get-Min),並附上對應的時間複雜度,即可穩拿基本分。

🤖
AI 詳解
AI 專屬家教

【破題】最小堆積(Min-Heap)是一種以樹狀結構實作優先佇列的資料結構,能確保最高優先權(鍵值最小)的元素始終位於根節點。 【論述】 一、最小堆積的定義

小題 (二)

請說明堆積排序(Heap Sort)的方法並分析其時間複雜度。(5 分)

思路引導 VIP

看到堆積排序(Heap Sort),應直覺聯想其兩大核心階段:「建立堆積(Build Heap)」與「逐步取出並調整(Extract & Heapify)」。作答時需條列式寫出排序步驟,並將時間複雜度拆分為建表與調整兩個部分進行精確分析,以展現嚴謹度。

🤖
AI 詳解
AI 專屬家教

【破題】堆積排序(Heap Sort)是一種利用二元堆積(Binary Heap)資料結構特性所設計的排序演算法,主要分為「建立堆積」與「排序輸出」兩個階段。 【論述】 一、堆積排序方法(以題幹給定之 Min-Heap 為例,由小到大取出,可產生遞減排序之陣列):

小題 (三)

若有兩個二元樹 T1 及 T2,其節點具有堆積特性且高度分別是 O(log n) 與 O(log m),請提供一個方法將此兩個二元樹結合成為一個節點具有堆積特性的二元樹 T,此方法的時間須為 O(log n+ log m)。(10 分)

思路引導 VIP

看到「將兩個具堆積特性的二元樹在 O(log n + log m) 時間內合併」,應立刻聯想到「左傾堆積 (Leftist Heap)」或「歪斜堆積 (Skew Heap)」的合併演算法 (Meld/Merge)。因為陣列實作的完全二元樹無法在對數時間內合併,本題放寬為「具堆積特性的二元樹」,故使用指標實作的遞迴合併法(比較根節點並往右子樹遞迴合併)即可達成時間複雜度的要求。

🤖
AI 詳解
AI 專屬家教

【解題思路】採用類似「左傾堆積(Leftist Heap)」的遞迴合併演算法,透過指標操作,沿著兩棵樹的特定路徑(如右子樹)進行合併,以達到 $O(\log n + \log m)$ 的時間複雜度。 【詳解】 已知條件:

📝 同份考卷的其他題目

查看 111年[資訊處理] 資料結構 全題

升級 VIP 解鎖