Skip to content

复杂度对比总表

线性表操作

操作顺序表单链表
按位查找O(1)O(n)
按值查找O(n)O(n)
已知位置插入O(n)O(1),已知前驱
已知位置删除O(n)O(1),已知前驱

栈与队列

结构入栈/入队出栈/出队取栈顶/队头
顺序栈O(1)O(1)O(1)
链栈O(1)O(1)O(1)
顺序循环队列O(1)O(1)O(1)
链队列O(1)O(1)O(1)

树与查找结构

结构平均查找最坏查找备注
顺序查找O(n)O(n)无序表
折半查找O(log n)O(log n)有序顺序表
BSTO(log n)O(n)极端退化成链
AVLO(log n)O(log n)严格平衡
散列表O(1)O(n)受装填因子影响

图算法

算法时间复杂度适用场景
BFSO(V + E) 邻接表无权最短路、层次遍历
DFSO(V + E) 邻接表连通性、遍历、回溯
PrimO(V^2) 邻接矩阵稠密图最小生成树
KruskalO(E log E)稀疏图最小生成树
DijkstraO(V^2)O((V+E)logV)单源最短路,非负权
FloydO(V^3)多源最短路
Topo SortO(V + E)DAG 拓扑序

排序算法

算法平均时间最坏时间空间稳定性
直接插入O(n^2)O(n^2)O(1)稳定
冒泡O(n^2)O(n^2)O(1)稳定
简单选择O(n^2)O(n^2)O(1)不稳定
希尔依增量而定通常写 O(n^2)O(1)不稳定
快速排序O(n log n)O(n^2)O(log n)不稳定
堆排序O(n log n)O(n log n)O(1)不稳定
归并排序O(n log n)O(n log n)O(n)稳定
基数排序O(d(n+r))O(d(n+r))O(r)稳定

最常被问的三类比较

1. BST vs AVL

  • BST 平均快,但最坏会退化。
  • AVL 始终保持 O(log n),但插删要调整。

2. 邻接矩阵 vs 邻接表

  • 邻接矩阵判边快,适合稠密图。
  • 邻接表省空间,适合稀疏图。

3. 快排 vs 归并

  • 快排常数小、平均快、原地,但最坏可能退化且不稳定。
  • 归并稳定、时间稳,但要额外空间。
最近更新

基于 MIT 许可发布