1. 程式人生 > >排序 查詢 樹 圖 的時間複雜度

排序 查詢 樹 圖 的時間複雜度

查詢演算法 時間複雜度
順序查詢 O(n) 演算法簡單,適應面廣,穩定演算法
折半查詢 O(log2n) 針對有序的序列表,不穩定
分塊查詢 介於順序查詢和折半查詢之間 針對有序表,不穩定演算法
平衡二叉樹查詢 O(log2n) 插入與刪除的複雜度也相同

排序法

平均時間

最差情形

穩定度

額外空間

冒泡

O(n2)    

O(n2)  穩定

O(1)

n小時較好

交換 O(n2) O(n2)  不穩定 O(1)

n小時較好

選擇

O(n2)  

O(n2)

不穩定 O(1)

n小時較好

插入 O(n2)

O(n2)

穩定 O(1) 大部分已排序時較好
Shell

O(nlogn)

O(ns)1<s<2

不穩定 O(1) s是所選分組 
快速 O(nlogn) 

O(n2)

不穩定 O(nlogn)

n大時較好

歸併 O(nlogn) 

O(nlogn)

穩定 O(1) n大時較好
O(nlogn) 

O(nlogn)

不穩定 O(1) n大時較好
基數 O(logRB)

O(nlogRB)

穩定 O(n) B是真數(0-9),R是基數(個十百)

樹圖

時間複雜度
克魯斯卡爾 O(eloge)
普里姆 O(n2)
迪傑斯特拉 O(n2)
拓撲排序 O(n+e)
關鍵路徑

O(n+e)