Logo
Section 1 / 2

速查表

这是各种数据结构和算法的最坏情况复杂度汇总。

导入

速查表

这是各种数据结构和算法的最坏情况复杂度汇总。

数据结构

数据结构最坏情况复杂度说明
数组
插入O(1)
访问O(1)
链表
尾部插入O(n)
头部插入O(1)
访问O(n)

注意:若新元素始终插入链表头部,则插入操作的时间复杂度为 O(1)。

二叉树
插入O(n)
访问O(n)

在最坏情况下,二叉树可能退化为链表结构。

动态数组
插入O(1)
访问O(1)

此处的“访问”指的是通过数组特定索引进行访问。

栈
入栈(Push)O(1)
出栈(Pop)O(1)

栈和队列通常不会涉及复杂的性能问题。这里列出它们是为了完整性。这两种数据结构更重要的是其“后进先出”(栈)和“先进先出”(队列)的特性。

队列
入队(Enqueue)O(1)
出队(Dequeue)O(1)
优先队列(二叉堆)
插入O(log n)
删除O(log n)
获取最大/最小值O(1)
哈希表
插入O(n)
查找O(n)
需注意,哈希表在平均情况下的插入和查找时间复杂度为 O(1)。
B-树
插入O(log n)
查找O(log n)
红黑树
插入O(log n)
查找O(log n)

算法

类别最坏情况复杂度说明
排序
冒泡排序O(n2)
插入排序O(n2)
选择排序O(n2)
快速排序O(n2)
归并排序O(n log n)
注意:尽管快速排序的最坏情况性能为 O(n²),但由于其平均情况时间复杂度为 O(n log n),因此在实际中仍被广泛使用。
树
深度优先搜索O(n)
广度优先搜索O(n)
前序、中序、后序遍历O(n)

n 表示树中节点的总数。大多数树的遍历算法都需要访问每个节点,因此其最坏情况时间复杂度为 O(n)。

复杂性理论

尾声