快轉到主要內容

時間與空間複雜度 (Complexity)

歡迎來到複雜度分析的章節!在進階演算法中,寫出「能跑得動」的程式碼往往比「寫出來」更重要。本章節將教你如何評估程式的執行效率與記憶體消耗,這是判斷演算法是否會超時 (TLE) 或記憶體超限 (MLE) 的關鍵技能。

1. 時間複雜度的概念
#

介紹 Big-O 符號的定義與核心概念,了解為什麼我們需要估算演算法在最壞情況下的執行時間。

2. 計算時間複雜度
#

學習分析程式碼的具體原則,包含忽略常數、只看最高次項,以及如何從迴圈結構推算複雜度。

3. 常見時間複雜度
#

整理競程中常見的複雜度級別(如 \(O(1)\), \(O(n \log n)\), \(O(n^2)\)),並對照輸入規模估算可行的演算法。

4. 空間複雜度
#

除了時間,記憶體也是有限資源。本節介紹如何評估演算法執行時所需的額外記憶體空間。

5. 均攤分析
#

介紹均攤分析 (Amortized Analysis) 的概念,了解如何評估一系列操作的平均成本,而非單次最差情況。

6. 調和級數
#

介紹調和級數在複雜度分析中的應用,特別是在處理因數、倍數相關題目時的複雜度估算。