选一个算法或数据结构,直接看时间与空间复杂度、稳定性与典型场景,复习和面试前扫一遍就够。
O(1) < O(log n) < O(n) < O(n log n)O(n log n) < O(n²) < O(2ⁿ) < O(n!)空间复杂度看额外辅助空间稳定性:相等元素相对顺序是否保持复杂度只描述增长趋势,常数因子与实际性能还要看数据规模和实现。
| 复杂度 | n=10⁶ 时的量级 |
|---|---|
| O(log n) | 约 20 次操作 |
| O(n) | 10⁶ |
| O(n log n) | 约 2×10⁷ |
| O(n²) | 10¹²(不可接受) |
| O(2ⁿ) | 指数爆炸 |
看循环层数:一层循环 O(n),两层嵌套 O(n²),每次规模减半 O(log n)。递归用递推式或主定理。
空间复杂度只算额外空间,输入本身不计。递归调用栈也要算,深度 n 的递归是 O(n) 空间。
大 n 时是,小 n 时常数因子可能让插入排序更快,所以库函数常混合使用。
冒泡、插入、归并、计数(按实现)。快排、选择、堆排不稳定。
指额外空间是常数,不随 n 增长。
要。每层调用占栈空间,深度决定空间复杂度。