用三場戰役
把 Big O 刻進你的本能
不背公式,靠遊戲玩出對時間複雜度的直覺。 看情境、讀程式、算極限——三款挑戰,覆蓋 O(1)、O(log n)、O(n)、O(n²) 四大派系。
不背公式,靠遊戲玩出對時間複雜度的直覺。 看情境、讀程式、算極限——三款挑戰,覆蓋 O(1)、O(log n)、O(n)、O(n²) 四大派系。
你看穿了大部分的時間複雜度陷阱
不管 n 多大,操作次數固定。最理想的複雜度。
把資料量從 1 變成 100 萬,所需時間幾乎一樣。
每次把問題切一半。資料變 1024 倍,操作只多 10 次。
非常快。能從 O(n) 升級到 O(log n) 通常代表演算法很漂亮。
資料變兩倍,時間就變兩倍。一個迴圈跑完就是這個。
日常開發最常見。對大部分情境都還算可以接受。
資料變兩倍,時間變四倍。資料一大就災難。
看到巢狀迴圈就要警覺。1 萬筆資料就有 1 億次操作。
時間複雜度(Big O)描述演算法運算量隨資料量 n 的成長趨勢,是 AI 工程與資料結構基礎(iPAS 中級科目一相關)。重點:O(1) 常數、O(log n) 對數(每次砍半)、O(n) 線性、O(n²) 平方(巢狀迴圈、兩兩比對),越上面越快。易混點:兩個「接連」的單層迴圈是 O(n) 不是 O(n²)(常數倍去掉);自注意力是 O(n²) 隨序列長度平方成長,限制上下文長度。情境:選演算法、估算能處理多大資料、理解 Transformer 長序列成本。
想練情境題與詳解 → AI 學習與考證地圖
描述演算法運算量(或記憶體)隨輸入規模 n 的成長趨勢,忽略常數與低階項,用來比較效率與可擴展性。
O(1) 不隨 n 變(最快)、O(log n) 每次砍半(超快)、O(n) 線性、O(n²) 平方(巢狀迴圈或兩兩比對,資料一大就爆)。
不一定。兩層「巢狀」都跑 n 才是 O(n²);兩個「接連」的單層迴圈是 O(n)(2n 去掉常數)。要看是巢狀還是接連。
自注意力是 O(n²),限制上下文長度與長文成本;選對資料結構(如 hash 查詢 O(1))能把 O(n²) 降到 O(n),影響訓練與推論效率。
用「硬體每秒運算數 × 時間預算 = 可負擔操作數」,再依複雜度反推 n(如 O(n²)、1 億次預算下 n 約 1 萬)。