数据结构 · 复杂度

算法复杂度速查 · 平均、最坏、空间分开看

选一个算法或数据结构,直接看时间与空间复杂度、稳定性与典型场景,复习和面试前扫一遍就够。

O(1) < O(log n) < O(n) < O(n log n)O(n log n) < O(n²) < O(2ⁿ) < O(n!)空间复杂度看额外辅助空间稳定性:相等元素相对顺序是否保持
选择算法排序 / 查找 / 结构

复杂度只描述增长趋势,常数因子与实际性能还要看数据规模和实现。

AI 讲解需人机验证
算法会算,AI 会讲为什么
计算结果等待输入
时间复杂度
—
平均时间
—
最坏时间
—
空间
—
稳定性
—
计算过程
  1. 填入数据后点「计算」,这里给出代入过程。
常见增长量级
复杂度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) 空间。

面试常问的三个对比

  • 快排平均 O(n log n),最坏 O(n²)(已排序且取首元素为枢轴)
  • 归并稳定但需 O(n) 额外空间;快排不稳定但原地
  • 哈希表平均 O(1),最坏 O(n)(全部冲突)

常见问题

O(n log n) 一定比 O(n²) 快吗?

大 n 时是,小 n 时常数因子可能让插入排序更快,所以库函数常混合使用。

稳定排序有哪些?

冒泡、插入、归并、计数(按实现)。快排、选择、堆排不稳定。

空间复杂度 O(1) 是什么都不占吗?

指额外空间是常数,不随 n 增长。

递归一定要额外空间吗?

要。每层调用占栈空间,深度决定空间复杂度。

相关工具