时间复杂度速查表

351 阅读1分钟

《学习JavaScript数据结构与算法》---读书笔记

常用数据结构的时间复杂度速查表

数据结构一般情况最差情况
数组/栈/队列O(1)[插入] O(1)[删除 ] O(n)[搜索]O(1)[插入] O(1)[删除 ] O(n)[搜索]
链表/双向链表O(1)[插入] O(1)[删除 ] O(n)[搜索]O(1)[插入] O(1)[删除 ] O(n)[搜索]
散列表O(1)[插入] O(1)[删除 ] O(1)[搜索]O(n)[插入] O(n)[删除 ] O(n)[搜索]
二分搜索树O(log(n))[插入] O(log(n))[删除 ] O(log(n))[搜索]O(n)[插入] O(n)[删除 ] O(n)[搜索]

图的时间复杂度速查表

节点/边的管理方式存储空间增加顶点增加边删除顶点删除边轮询
相邻列表O(|V|+|E|)O(1)O(1)O(|V|+|E|)O(|E|)O(|V|)
相邻矩阵O(|V|^2)O(|V|^2)O(1)O(|V|^2)O(1)O(1)

排序算法的时间复杂度速查表

算法(用于数组)最好情况一般情况最差情况
冒泡排序O(n)O(n^2)O(n^2)
选择排序O(n^2)O(n^2)O(n^2)
插入排序O(n)O(n^2)O(n^2)
归并排序O(nlog(n))O(nlog(n))O(nlog(n))
快速排序O(nlog(n))O(nlog(n))O(n^2)

搜索算法

算法数据结构最差情况
顺序搜索数组和链表O(n)
二分搜索排好序的数组或二分搜索树O(log(n))
深度优先搜索(DPS)|V|为顶点而|E|为边的图O(|V|+|E|)
深度优先搜索(BFS)|V|为顶点而|E|为边的图O(|V|+|E|)