免費開始練習
高考申論題 105年 [資訊處理] 資料結構

第 一 題

📖 題組:
五、對下列程式片段,請用 Big-O 符號(Big-O notation),分別估計最長執行時間(worst time)。注意:S 中沒有與 n 相關的迴圈(n-dependent loops)。(每小題 5 分,共 20 分)
(一) for (int i = 0; i * i < n; i++) S
(二) for (int i = 1; i < n+1; i*=2) S
(三) for (int i = 1; i < n+1; i*=2)
for (int j = 0; j < n; j++) S
(四) k=1; for (int i=0; i<n; i++)
{k*=3; for (int j=0; j<k; j++) S}
📝 此題為申論題,共 4 小題

小題 (一)

for (int i = 0; i * i < n; i++) S

思路引導 VIP

分析這類迴圈的時間複雜度,關鍵在於找出迴圈變數的「初始值」、「遞增模式」與「終止條件」。看到條件 i * i < n 且每次 i++,應推導 i 的平方與 n 的不等式關係,進而解出迴圈執行的總次數。

🤖
AI 詳解
AI 專屬家教

【解題思路】分析迴圈變數的初始值、遞增方式與終止條件,推導出迴圈執行的總次數,再轉換為 Big-O 符號。 【詳解】 已知:迴圈變數 i 從 0 開始,每次遞增 1(i++)。依題意,S 內部無與 n 相關的迴圈,故 S 單次執行時間視為常數時間 $O(1)$。

小題 (二)

for (int i = 1; i < n+1; i*=2) S

思路引導 VIP

看到迴圈變數的更新方式為乘法(i*=2),應立刻聯想到指數增長與對數關係。藉由列出每次疊代 i 的數值變化(1, 2, 4..., 2^k),並與終止條件(n+1)建立不等式,即可精準推導出執行次數為對數級別。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用變數的幾何級數增長特性,推導執行次數與 n 的對數關係。 【詳解】 已知:迴圈初始值為 i = 1,終止條件為 i < n+1,每次疊代 i 的值乘以 2。題目說明指令 S 的執行時間與 n 無關,故視為常數時間 O(1)。

小題 (三)

for (int i = 1; i < n+1; i*=2)
for (int j = 0; j < n; j++) S

思路引導 VIP

面對雙層巢狀迴圈的時間複雜度計算,應先由外向內(或由內向外)分別評估各層迴圈的執行次數。外層變數呈指數倍增,屬對數時間級別;內層為固定次數的線性遞增,屬線性時間級別。兩者彼此獨立,相乘即為總時間複雜度。

🤖
AI 詳解
AI 專屬家教

【解題思路】分析巢狀迴圈的執行次數,將外層迴圈與內層迴圈的時間複雜度獨立計算後相乘即可得解。 【詳解】 已知條件整理:

小題 (四)

k=1; for (int i=0; i<n; i++)
{k*=3; for (int j=0; j<k; j++) S}

思路引導 VIP

觀察內外層迴圈的相依關係,將變數 k 隨著外層迴圈 i 增加的變化規律列出,並計算內層迴圈執行次數的總和。利用等比級數公式求和後,即可得出最長執行時間的 Big-O 表示法。

🤖
AI 詳解
AI 專屬家教

【解題思路】列出每一圈變數 k 的數值變化,計算內層迴圈執行次數的等比級數和。 【詳解】 已知:變數 k 初始值為 1,外層迴圈 i 從 0 執行到 n-1,共執行 $n$ 次。

📝 Big-O 時間複雜度分析
💡 透過分析迴圈次數與終止條件,判斷程式執行時間級數。
  • 分析終止條件:將變數變動規律代入不等式,求出執行次數 k。
  • 判定常數時間:S 與 n 無關時視為 $O(1)$,不影響量級。
  • 區分增長級數:精確判讀變數之線性、平方、對數或指數成長。
🧠 記憶技巧:VIP 會員可查看這題的記憶口訣與速記法
⚠️ 常見陷阱:VIP 會員可查看這題最常被誘答的陷阱整理
漸近符號 Big-O/Omega/Theta 遞迴演算法複雜度分析 空間複雜度

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

演算法分析與複雜度
查看更多「[資訊處理] 資料結構」的主題分類考古題

📝 同份考卷的其他題目

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