算法分析关心“数据变大时,耗时怎么涨”。Big-O 描述上界趋势,不纠结常数细节。
图:常见复杂度随输入规模 n 的增长趋势
- O(1):下标访问数组。
- O(n):单层遍历。
- O(n²):双层嵌套遍历同一规模。
- O(log n):每次排除一半,如二分查找。
// O(n)
function sum(arr) {
let s = 0;
for (const x of arr) s += x;
return s;
}
学习建议:先保证正确,再在热点路径上用复杂度思维优化;过早优化往往浪费时间。