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

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

排序法數組

最差時間分析函數

平均時間複雜度排序

穩定度隊列

空間複雜度get

冒泡排序table

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

 

 

 

一、二分查找時間複雜度:lonN;和快速排序的時間複雜度:NlogN

二、空間複雜度:通常狀況下是不考慮空間複雜度的,空間複雜度並非指全部的數據所佔用的空間,而是使用的輔助空間的大小,好比兩個矩陣的運算,在中間設置了一箇中間矩陣來保存一些數據,這些空間叫作空間複雜度。空間複雜度的運算很是麻煩,通常簡單的算法空間複雜度都是O(1),比較複雜的會告知空間複雜度,記住就行了。

三、算法:空間換時間

相關文章
相關標籤/搜索