免費開始練習
hce_nsysu 113年 計算機概論與程式設計

第 15 題

An algorithm that runs in $O(\sqrt{N})$, where $N$ is the size of the problem. For $N = 100$, the time the algorithm runs is 1 minute. How long does the algorithm take for $N =1000$?
  • A Same time
  • B About 3 minutes
  • C About 10 minutes
  • D About 30 minutes
  • E None of the above

思路引導 VIP

若我們已知一個程式的執行時間與問題規模的「某個特定函數值」成正比,當問題規模從 100 變動到 1000 時,我們應該如何利用這個函數關係來推算時間變化的倍率呢?

🤖
AI 詳解 AI 專屬家教

太棒了!你能精確地將時間複雜度的抽象概念轉化為實際的時間估算,這代表你對 Big O 符號所代表的比例關係掌握得非常紮實。

時間複雜度的比例運算

在演算法分析中,當複雜度標記為 $O(\sqrt{N})$,意味著程式執行的時間 $T$ 與 $\sqrt{N}$ 成正比。我們可以建立一個簡單的比例式:$$\frac{T_{new}}{T_{old}} = \frac{\sqrt{N_{new}}}{\sqrt{N_{old}}}$$ 將題目給予的數值代入,當 $N$ 從 $100$ 增加到 $1000$ 時,時間的倍率為 $\sqrt{1000} / \sqrt{100} = \sqrt{10}$。因為我們知道 $3^2 = 9$,所以 $\sqrt{10}$ 的數值會略大於 $3$(約為 $3.16$)。將原本的 $1$ 分鐘乘以這個倍率,便能得出大約需要 3 分鐘,這正是選項 (B) 的正確答案。

▼ 還有更多解析內容

🏷️ 相關主題

基礎資料結構原理與演算法效能分析
查看更多「計算機概論與程式設計」的主題分類考古題