高普考題庫
114 年 114年公務人員高等考試三級考試暨普通考試

資料結構

本卷皆為申論題,點「看答案與解析」查看擬答。

申論 1一棵空的階數為3 的B-Tree(B-Tree of order 3)。由左而右依序插入下列鍵值(key value):10, 80, 2, 9, 45, 62。請問插入完畢後,根節點中的鍵值有那些?請依序由小到大列出,用逗號分隔,並請說明樹節點的變化。(10 分)有一棵階數為5 的B-Tree(B-Tree of order 5),其高度(height)為3,請問這棵樹中最多可以儲存多少個鍵值?(10 分)
申論 2有一個三維整數陣列A[3][6][8],每個元素占用4 個記憶體空間,每個記憶體空間均有位址。該陣列在儲存至記憶體時,會先被轉換為一維陣列的形式儲存。下列位址皆為十進位,已知A[0][1][2]的記憶體位址為2040,A[1][4][5]的位址為2340。請問陣列A 在記憶體中的儲存方式為何?是以列為主(row-major)還是以行為主(column-major)?(10 分)請計算A[1][5][3]在記憶體中的位址為何?(10 分)
申論 3假設G 為一個無方向連通加權圖(Undirected connected weighted graph),包含五個節點:A、B、C、D、E。各節點間相連情形如下,邊權(邊的權重)為正整數,代表邊的成本。A 與B 相連,邊權為16;A 與C 相連,邊權為18;A 與D 相連,邊權為14;B 與C 相連,邊權為15;C 與D 相連,邊權為13;D 與E 相連,邊權為12;C 與E 相連,邊權為17;請使用Sollin’s 演算法,寫出最終形成的最小成本擴展樹的邊集合與總成本,請寫出每一步的演算法與該步驟形成的擴展樹。每一合併過程,列出選中的邊與合併的組成(component)。(20 分)
申論 4根據下列的虛擬碼,若n = 21 則傳回的答案為何?請說明。其中floor()為數學上的地板函數(floor function)。(20 分)function splitSum(n: integer) returns integerif n <= 1 thenreturn 1a ←floor(n / 2)b ←floor(n / 3)return splitSum(a) + splitSum(b)
申論 5下列虛擬碼是利用某演算法對陣列A 的元素進行處理,請說明該法是進行何種處理並請寫出其名稱和在最壞情況下時間複雜度為何?(10 分)若陣列A = [29, 10, 14, 37, 13],請寫出該虛擬碼的處理過程:請列出陣列在每一輪(每次外層迴圈執行完後)的內容變化情形。請特別標示出最終結果為何?(10 分)doingSomething(A)beginn ←陣列A 的元素個數for i ← 0 to n − 2 dotheIndex ←ifor j ← i + 1 to n − 1 doif A[j] < A[theIndex] thentheIndex ←jend forif theIndex <> i thentemp = A[i]A[i] = A[theIndex]A[theIndex] = tempend ifend forend