
106年公務人員高等考試三級考試試題 代號:26050 全一張
(背面)
類 科:資訊處理
科 目:資料結構
三、表二列出五種常見的排序演算法,請填滿該表以顯示各排序法在最佳情況、一般情況、最
壞情況下的時間複雜度、所需額外記憶體空間及是否為穩定排序法。快速排序法的各項資
料已事先填入作為範例。((a),(b),(c),(d)各5分,共 20 分)
表二
最佳情況
(best case)一般情況
(average case)最壞情況
(worst case) 所需額外空間
穩定排序法
(stable sor
)
快速排序法
(quicksort) O(n log n) O(n log n) O(n2) O(n) 不是
(a)泡沫排序法
bubble sort
(b)插入排序法
insertion sort
(c)合併排序法
merge sort
(d)堆積排序法
heap sort
四、矩陣相乘是問題解決中常見的計算,但相乘順序對於計算效能有極大的影響。給定 n個矩陣,
A1,A
2,…,A
n,且任一矩陣 Ai大小為 nii pppp ...,,, 01 ×
−皆為正整數。A1×A2×…×An實
際計算過程可以是(…((A1×A2)×A3)×…×An)、(A1×(A2×(…×(An-2 ×(An-1 ×An))…)))、或
其他合理的順序,而因矩陣相乘順序不同,所需要的乘法運算次數可能也會不同。透過動
態規劃(dynamic programming)、二維陣列的應用及遞迴程式,可以找到最少乘法運算次
數的計算順序。方法如下:令 ],[
im 為計算 Ai×Ai+1 ×…×Aj時所需最少乘法運算次數,
],[
im 可以下列遞迴公式表示之:
⎩
⎨
⎧
≥
<+++
=−
<≤ jiif
jiifpppjkmkim
jim jki
jki ,0
},],1[],[{min
],[ 1
請說明 A1×A2×…×An相乘過後的矩陣大小為何?(3分)
透過上述方法所找到的最少乘法運算次數,應為二維陣列 ],[
im 中的那個元素,亦即 i, j
應分別為何?(3分)
若n=4且
43210
,,,, ppppp 分別為 3, 4, 5, 4, 2,請計算並填寫出二維陣列 ],[
im 。(11 分)
承上小題,請說明該四矩陣相乘,A1×A2×A3×A4,最少共需有幾次乘法運算。(3分)
五、請依序將 17, 23, 36, 13, 38, 11, 52, 44, 25, 35, 2, 18, 21 儲存至下列 13 桶(buckets)×1槽
(slots)的雜湊表(hashing table)。請以各小題所設定的雜湊函式(hashing function)將資
料依序存入並顯示最後的雜湊表。
雜
湊
表
0 1 2 3 4 5 6 7 8 9 10 11 12
雜湊函式 F(x) = x mod 13,碰撞時,採取「線性探測法」(open addressing with linear
probing)來放入資料。請顯示最後的雜湊表。(5分)
雜湊函式 F(x) = x mod 13,碰撞時,採取「二次方探測法」(open addressing with quadratic
probing)來放入資料。請顯示最後的雜湊表。(5分)
雜湊函式 F1(x) = x mod 13,碰撞時,採取「雙探測法」(open addressing with double hashing)
來放入資料,第二雜湊函式為 F2(x) = 7
-
(x mod 7)。請顯示最後的雜湊表。(5分)
若雜湊表夠大(例如 slots = 2 或更大)但資料量多時,針對三種碰撞時所採取的處理方
式,請說明那一種方式較能有效率的儲存或搜尋資料?請說明那一種處理方式效率最
差?(5分)