🎯 什麼情境該想到我
當你想判斷「這段程式在資料量變大時會不會爆掉」,或在兩個方案間比較效率時。
⚙️ 怎麼用
- 看主導項:只看輸入 n 變大時成長最快的部分,忽略常數與低階項。
- 常見等級(由快到慢):O(1) → O(log n) → O(n) → O(n log n) → O(n²) → O(2ⁿ)。
- 快速估:單層迴圈 O(n)、巢狀雙迴圈 O(n²)、每次砍半 O(log n)、排序多為 O(n log n)。
- 同時看空間複雜度:記憶體也可能是瓶頸(時間換空間的取捨)。
先估複雜度,再決定「資料規模下這個方案可不可行」,避免上線才發現慢爆。
🧪 我實際套用的紀錄
- 2026-07-15:(待填)
⚠️ 注意
- Big-O 是趨勢不是絕對;小 n 時常數/實作細節可能主導,別過早為漸進最佳而犧牲可讀性(見 工具-簡單清楚至上)。
🔗 相關工具
- 工具-資料結構的選擇 —— 複雜度多半是資料結構決定的;估完發現會爆,第一個該換的就是它
- 工具-演算法設計策略 —— 換結構還不夠時的下一層:先辨認問題屬於分治/貪婪/動態規劃哪一類再重寫