
109年公務人員高等考試三級考試試題
※注意:禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目除專門名詞或數理公式外,應使用本國文字作答。
代號:
頁次:
-
一、考慮數字1到n,若將其順序重新排置,每個排列順序都稱作一個排列或置換
(Permutation),例如5 1 4 3 2是1 2 3 4 5的一個排列。我們可以將一個數字1
到n的排列視為一個順序的映射P,則前述例子可表示為P(5) = 1、P(1) = 2、
P(4) = 3、P(3) = 4、P(2) = 5。當然,1 2 3 4 5也是1 2 3 4 5的一個排列。在
一個數字1到n的排列P中,若一對數字 i和j,1i<jn,P(j) < P(i),也
就是在排列P中較大的數字 j出現在較小的數字 i左邊(前面),我們稱此
對數字為反向(Inversion),而排列P的反向數(Inversion number)則定義
為排列P中反向的總數量。請回答下列問題:
數字1到n的何種排列會有最大的反向數?最大反向數是多少?(5分)
若給定一個數字1到n的排列P,請提出一個線性遞迴(Linear Recursive)
的方式來算出排列P的反向數,並提供虛擬碼(Pseudo-code)與時間複
雜度分析。(10分)
二、優先佇列(Priority Queue)是依管理物件的優先權來考量,在此我們考慮
管理物件的鍵值(Key)愈小其優先權愈高,兩個主要操作則分別為加入
(Insert)與擷取最小者(Delete_Min)。
請說明如何利用優先佇列對n個鍵值進行排序。(6分)
我們使用一個未排序的陣列(Unsorted Array)來管理鍵值以實現一個
優先佇列,請回答下列問題:(10分)
⑴若有n個鍵值,請說明兩個主要操作(加入(Insert)與擷取最小者
(Delete_Min))的時間複雜度。
⑵請判斷下面的敘述是否為真,並請說明原因:
若以此優先佇列進行排序(Sorting),其所對應的排序原理為插入排
序(Insertion Sort)。
二元堆積(BinaryHeap)是一個優先佇列的資料結構,因為我們考慮鍵值
小的物件有高的優先權,所以又可稱為最小堆積(MinimumHeap)。(14分)
⑴在結構上最小堆積為一個完全二元樹(Complete Binary Tree),若使
用一個陣列來實作最小堆積,陣列中物件的鍵值放置如下,請描述此
陣列對應的完全二元樹(以樹狀結構表示)。
Index 1 2 3 4 5 6 7 8 9 10
Key 35 18 42 24 7 14 25 12 38 21
⑵請說明二元堆積中何謂堆積特性(Heap Property)?
⑶前揭⑴中的完全二元樹並未有堆積特性,請將其進行堆積化
(Heapify),並以陣列表示出堆積化後的最小堆積所對應之完全二元樹。