常用的排序、查找算法的時間復雜度和空間復雜度


常用的排序算法的時間復雜度和空間復雜度

排序法

最差時間分析

平均時間復雜度

穩定度

空間復雜度

冒泡排序

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塊中的任一元素,……。然后使用二分查找及順序查找。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM