常用算法和數據結構的複雜度速查表

常用算法數據結構的複雜度速查表,

轉自:http://blog.csdn.net/qq_33583069/article/details/52808381

搜索

算法 數據結構 時間複雜度 空間複雜度
    平均 最差 最差
深度優先搜索 (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 elements O(log(n)) O(log(n)) O(1)
窮舉查找 Array O(n) O(n) O(1)
最短路徑-Dijkstra,用小根堆作爲優先隊列 Graph with |V| vertices and |E| edges O((|V| + |E|) log |V|) O((|V| + |E|) log |V|) O(|V|)
最短路徑-Dijkstra,用無序數組作爲優先隊列 Graph with |V| vertices and |E| edges O(|V|^2) O(|V|^2) O(|V|)
最短路徑-Bellman-Ford Graph with |V| vertices and |E| edges O(|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)

節點 / 邊 管理 Storage Add Vertex Add Edge Remove Vertex Remove Edge Query
鄰接表 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|)

 

英文版鏈接:http://bigocheatsheet.com/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章