經常使用的排序/查找算法的時間複雜度和空間複雜度

 

 經常使用的排序算法的時間複雜度和空間複雜度算法

 

排序法 最差時間分析 平均時間複雜度 穩定度 空間複雜度
冒泡排序 O(n2) O(n2) 穩定 O(1)
插入排序 O(n2) O(n2) 穩定 O(1)
選擇排序 O(n2) O(n2) 穩定 O(1)
二叉樹排序 O(n2) O(n*log2n) 不必定 O(n)
快速排序 O(n2) O(n*log2n) 不穩定 O(log2n)~O(n)
堆排序 O(n*log2n) O(n*log2n) 不穩定 O(1)
希爾排序 O O 不穩定 O(1)



查找算法時間複雜度數組

 

查找 平均時間複雜度 查找條件 算法描述
順序查找 O(n) 無序或有序隊列 按順序比較每一個元素,直到找到關鍵字爲止
二分查找(折半查找) O(logn) 有序數組 查找過程從數組的中間元素開始,若是中間元素正好是要查找的元素,則搜素過程結束;若是某一特定元素大於或者小於中間元素,則在數組大於或小於中間元素的那一半中查找,並且跟開始同樣從中間元素開始比較。 若是在某一步驟數組爲空,則表明找不到。
二叉排序樹查找 O(logn) 二叉排序樹 在二叉查找樹b中查找x的過程爲:
1. 若b是空樹,則搜索失敗
2. 若x等於b的根節點的數據域之值,則查找成功;
3. 若x小於b的根節點的數據域之值,則搜索左子樹
4. 查找右子樹。
哈希表法(散列表) O(1) 先建立哈希表(散列表) 根據鍵值方式(Key value)進行查找,經過散列函數,定位數據元素。
分塊查找 O(logn) 無序或有序隊列 將n個數據元素"按塊有序"劃分爲m塊(m ≤ n)。每一塊中的結點沒必要有序,但塊與塊之間必須"按塊有序";即第1塊中任一元素的關鍵字都必須小於第2塊中任一元素的關鍵字;而第2塊中任一元素又都必須小於第3塊中的任一元素,……。而後使用二分查找及順序查找。
相關文章
相關標籤/搜索