1.顺序表
- 插入操作时间复杂度
最好O(1),最坏O(n),平均O(n)
移动结点的平均次数n/2
- 删除操作时间复杂度
最好O(1),最坏O(n),平均O(n)
移动结点的平均次数(n-1)/2
- 按值查找时间复杂度
最好O(1),最坏O(n),平均O(n)
移动结点的平均次数(n+1)/2
2.单链表
- 头插法O(n)
- 尾插法O(n)
- 按序查找O(n)
- 按值查找O(n)
- 插入
- 删除
其中插入和删除操作,指定结点O(1),需要从头查找则花费主要用于查找O(n)
3.二叉树
- 二叉树的遍历
时间复杂度O(n),空间复杂度O(n)
- 二叉排序树
插入/删除O(n)
4.图
- 邻接矩阵存储空间
O(n^2)
- 邻接表存储空间
无向图O(|V|+2|E|),有向图O(|V|+|E|)
- 十字链表和邻接多重表存储空间
O(|V|+|E|)
- 广度优先搜索
时间复杂度:邻接表O(|V|+|E|),邻接矩阵O(|V|^2)
空间复杂度:O(n)
- 深度优先搜索
时间复杂度:邻接表O(|V|+|E|),邻接矩阵O(|V|^2)
空间复杂度:O(n)
- 求最小生成树时间复杂度
Prim算法:O(|V|^2)
Kruskal算法:O(|E|log|E|)
- 求最短路径时间复杂度
Dijkstra算法:O(|V|^2)
Floyd算法:O(|V|^3)
- 拓扑排序时间复杂度
O(|V|+|E|)
5.内部排序