程式設計基礎篇 · 複雜度:一眼看穿程式碼值不值
Big-O:一眼看穿程式碼要跑多久
姊妹篇講完了「資料結構 = 收納方式」,這一章講另一半:演算法 = 做事的套路。評價一個套路好不好,程式設計師有一把統一的尺子,叫 Big-O。別被數學符號嚇到——它回答的問題只有一個:資料變多的時候,你的程式碼會慢多少?今天用三個互動把這把尺子裝進你腦子裡。
互動一 · 四條曲線分道揚鑣
四種常見「套路」的耗時曲線:O(1) 灰(不管多少資料都一步到位)、O(log n) 綠(每次砍一半)、O(n) 藍(挨個過一遍)、O(n²) 紅(每個都要和每個比)。拖動滑塊把資料量從 10 拉到 10 萬,右側是按「1 億次操作/秒」換算的真實耗時。留意:前半段四條線擠在一起——資料小時什麼演算法都快,這正是 Demo 騙人的原因。
先拖到最左邊再慢慢往右。n = 100 以內,四條線全趴在地板上——這就是「Demo 階段一切正常」。拖過 1 萬,紅線開始起飛;到 10 萬,O(n²) 已經要跑 100 秒,而綠線還是幾乎為零。
互動二 · 資料翻十倍會怎樣
換個更直接的問法:老闆說「使用者量要翻十倍」,四種套路各自會慢多少?點「×10」按鈕,連點三次,看差距怎麼滾雪球。
當前資料量 1,000條
規律先記住:資料 ×10 時,O(1) 不變、O(log n) 只 +一點、O(n) 跟著 ×10、O(n²) 直接 ×100。點幾下按鈕驗證一下。
互動三 · 猜猜這段程式碼
尺子拿到手了,來驗一驗。三段虛擬碼,各選一個複雜度。訣竅:別讀懂每一行,只看「資料變多時,它要多幹多少活」。
為什麼這把尺子對你有用?你以後驗收 AI 寫的程式碼,不需要逐行看懂,只需要問一句:「這段的複雜度是多少?資料到 10 萬條還能跑嗎?」AI 會老老實實告訴你。而絕大多數「上線後越來越卡」的事故,翻開一看都是一個藏在角落裡的 O(n²)。下一課我們就去看大模型裡最有名的那個 O(n²)——注意力機制。
✅ 這一課想和你分享的
- Big-O 只看趨勢:它不關心一次跑多快,只關心「資料變多時耗時怎麼漲」
- 常數不重要、趨勢要命:慢 2 倍能忍,隨 n² 增長等於判死刑
- 資料小時看不出來:四條曲線在 Demo 階段擠在一起,差距要到資料變多才爆發
- n² 是大部分卡頓事故的元兇:驗收程式碼先找巢狀迴圈