高考申論題
114年
[資訊處理] 資料結構
第 五 題
五、下列虛擬碼是利用某演算法對陣列 A 的元素進行處理,請說明該法是進行何種處理並請寫出其名稱和在最壞情況下時間複雜度為何?(10 分)
若陣列 A = [29, 10, 14, 37, 13],請寫出該虛擬碼的處理過程:請列出陣列在每一輪(每次外層迴圈執行完後)的內容變化情形。請特別標示出最終結果為何?(10 分)
doingSomething(A)
begin
n ←陣列 A 的元素個數
for i ← 0 to n − 2 do
theIndex ← i
for j ← i + 1 to n − 1 do
if A[j] < A[theIndex] then
theIndex ← j
end for
if theIndex <> i then
temp = A[i]
A[i] = A[theIndex]
A[theIndex] = temp
end if
end for
end
📝 此題為申論題
思路引導 VIP
看到此虛擬碼,先觀察雙層迴圈的結構與內部邏輯。外層迴圈控制排序位置,內層迴圈則在未排序的剩餘元素中尋找『最小值』的索引(theIndex),最後進行位置交換,由此可一眼判定為『選擇排序法(Selection Sort)』。接著依循迴圈變數逐步追蹤陣列元素的變化即可得解。
🤖
AI 詳解
AI 專屬家教
【解題關鍵】辨識虛擬碼為選擇排序法(Selection Sort),核心邏輯為每次從未排序區段中找出最小值,並與該區段的起始元素進行交換。 【解答】 一、 演算法說明、名稱與時間複雜度
▼ 還有更多解析內容