速查表:常用算法和数据结构的复杂度

【摘要】常用算法和数据结构的复杂度速查表

转自http://top.jobbole.com/1599/

算法数据结构时间复杂度空间复杂度
  平均最差最差
深度优先搜索 (DFS)Graph of |V| vertices and |E| edges-O(|E| + |V|)O(|V|)
广度优先搜索 (BFS)Graph of |V| vertices and |E| edges-O(|E| + |V|)O(|V|)
二分查找Sorted array of n elementsO(log(n))O(log(n))O(1)
穷举查找ArrayO(n)O(n)O(1)
最短路径-Dijkstra,用小根堆作为优先队列Graph with |V| vertices and |E| edgesO((|V| + |E|) log |V|)O((|V| + |E|) log |V|)O(|V|)
最短路径-Dijkstra,用无序数组作为优先队列Graph with |V| vertices and |E| edgesO(|V|^2)O(|V|^2)O(|V|)
最短路径-Bellman-FordGraph with |V| vertices and |E| edgesO(|V||E|)O(|V||E|)O(|V|)

排序

算法数据结构时间复杂度最坏情况下的辅助空间复杂度
  最佳平均最差最差
快速排序数组O(n log(n))O(n log(n))O(n^2)O(n)
归并排序数组O(n log(n))O(n log(n))O(n log(n))O(n)
堆排序数组O(n log(n))O(n log(n))O(n log(n))O(1)
冒泡排序数组O(n)O(n^2)O(n^2)O(1)
插入排序数组O(n)O(n^2)O(n^2)O(1)
选择排序数组O(n^2)O(n^2)O(n^2)O(1)
桶排序数组O(n+k)O(n+k)O(n^2)O(nk)
基数排序数组O(nk)O(nk)O(nk)O(n+k)

数据结构

数据结构时间复杂度空间复杂度
 平均最差最差
 索引查找插入删除索引查找插入删除 
基本数组O(1)O(n)--O(1)O(n)--O(n)
动态数组O(1)O(n)O(n)O(n)O(1)O(n)O(n)O(n)O(n)
单链表O(n)O(n)O(1)O(1)O(n)O(n)O(1)O(1)O(n)
双链表O(n)O(n)O(1)O(1)O(n)O(n)O(1)O(1)O(n)
跳表O(log(n))O(log(n))O(log(n))O(log(n))O(n)O(n)O(n)O(n)O(n log(n))
哈希表-O(1)O(1)O(1)-O(n)O(n)O(n)O(n)
二叉搜索树O(log(n))O(log(n))O(log(n))O(log(n))O(n)O(n)O(n)O(n)O(n)
笛卡尔树-O(log(n))O(log(n))O(log(n))-O(n)O(n)O(n)O(n)
B-树O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(n)
红黑树O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(n)
伸展树-O(log(n))O(log(n))O(log(n))-O(log(n))O(log(n))O(log(n))O(n)
AVL 树O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(n)

Heaps时间复杂度
 建堆查找最大值提取最大值Increase Key插入删除合并 
链表(已排序)-O(1)O(1)O(n)O(n)O(1)O(m+n)
链表(未排序)-O(n)O(n)O(1)O(1)O(1)O(1)
二叉堆O(n)O(1)O(log(n))O(log(n))O(log(n))O(log(n))O(m+n)
二项堆-O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(log(n))
斐波那契堆-O(1)O(log(n))*O(1)*O(1)O(log(n))*O(1)

节点 / 边 管理StorageAdd VertexAdd EdgeRemove VertexRemove EdgeQuery
邻接表O(|V|+|E|)O(1)O(1)O(|V| + |E|)O(|E|)O(|V|)
关联表O(|V|+|E|)O(1)O(1)O(|E|)O(|E|)O(|E|)
邻接矩阵O(|V|^2)O(|V|^2)O(1)O(|V|^2)O(1)O(1)
关联矩阵O(|V| ⋅ |E|)O(|V| ⋅ |E|)O(|V| ⋅ |E|)O(|V| ⋅ |E|)O(|V| ⋅ |E|)O(|E|)

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂奔的乌龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值