这份速查表按抽象数据类型重新分类。原文把对称矩阵、稀疏矩阵列为链表变种,也把 KMP、查找等算法混入数据结构层级,容易造成概念混淆。

类别 常见实现或变体 典型操作与复杂度
动态数组 Vector、ArrayList 随机访问 $O(1)$;尾部均摊插入 $O(1)$;中间插删 $O(n)$
链表 单链表、双向链表、循环链表 已知节点处插删 $O(1)$;按下标访问 $O(n)$
数组栈、链式栈 入栈、出栈、查看栈顶通常为 $O(1)$
队列 循环队列、链式队列、双端队列 两端操作依实现可达 $O(1)$
哈希表 链地址法、开放寻址法 平均查找/插入/删除 $O(1)$,最坏 $O(n)$
集合并查集 Union-Find / DSU 路径压缩 + 按秩合并后,均摊复杂度接近 $O(1)$
二叉树、BST、AVL、红黑树、Trie、B/B+ 树 有序平衡树查找/更新通常为 $O(\log n)$
二叉堆、d 叉堆、二项堆、斐波那契堆、配对堆 查看极值 $O(1)$;二叉堆插入/删除极值 $O(\log n)$
邻接表、邻接矩阵、边集 遍历通常为 $O(V+E)$;稠密图可考虑邻接矩阵
字符串索引 Trie、后缀数组、后缀自动机 用于前缀、子串和字典匹配;KMP/BM 属于匹配算法而非数据结构

复杂度只描述增长趋势,实际选择还要考虑缓存局部性、内存开销、数据规模和语言标准库实现。例如小规模数据上,连续数组常因缓存友好而优于理论复杂度相近的指针结构。