常用的排序 查詢演算法的時間複雜度和空間複雜度

2021-09-21 01:57:08 字數 1192 閱讀 8343

**:

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

排序法最差時間分析

平均時間複雜度

穩定度空間複雜度

氣泡排序

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)

希爾排序oo

不穩定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塊中的任一元素,……。然後使用二分查詢及順序查詢。

常用排序演算法的時間複雜度與空間複雜度

常用的排序演算法的時間複雜度和空間複雜度 排序法 最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 o n2 o n2 穩定 o 1 快速排序 o n2 o n log2 n 不穩定 o log2 n o n 選擇排序 o n2 o n2 穩定 o 1 二叉樹排序 o n2 o n log...

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

總結 1 當排序記錄個數n較大,關鍵碼分布較隨機,且對穩定性不作要求時,採用快速排序為宜。2 當待排序記錄個數n較大,記憶體空間允許,且要求穩定排序時,採用歸併排序。3 當待排序記錄個數n較大,關鍵碼分布可能出現正序或逆序的情況,且對穩定性不作要求時,採用堆排序或歸併排序。4 當待排序記錄個數n較大...

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

以上快速排序和歸併排序的空間複雜度不正確 圖2沒有的參考圖1,以圖2為準 對,就是懶得重新畫圖了 排序法最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 o n2 o n2 穩定 o 1 快速排序 o n2 o n log2n 不穩定 o log2n o n 選擇排序 o n2 o n2 ...