各種演算法的時間複雜度

2021-05-22 01:57:24 字數 1084 閱讀 9544

1.hash 演算法的時間複雜度:

o(1)

2.遍歷二叉樹的時間複雜度:

對含有n個節點的二叉樹,遍歷演算法的時間複雜度為o(n),控制項複雜度也為 o(n)

3。常見的排序演算法的時間複雜度

名稱複雜度

說明備註

氣泡排序

bubble sort

o(n*n)

將待排序的元素看作是豎著排列的「氣泡」,較小的元素比較輕,從而要往上浮

插入排序

insertion sort

o(n*n)

逐一取出元素,在已經排序的元素序列中從後向前掃瞄,放到適當的位置

起初,已經排序的元素序列為空

選擇排序

o(n*n)

首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小元素,然後放到排序序列末尾。以此遞迴。

快速排序

quick sort

o(n *log2

(n))

先選擇中間值,然後把比它小的放在左邊,大的放在右邊(具體的實現是從兩邊找,找到一對後交換

)。然後對兩邊分別使用這個過程(遞迴)。

堆排序heap sort

o(n *log2

(n))

利用堆(heaps)這種資料結構來構造的一種排序演算法。堆是乙個近似完全二叉樹結構,並同時滿足堆屬性:即子節點的鍵值或索引總是小於(或者大於)它的父節點。

近似完全二叉樹

希爾排序

shell

o(n1+£)

0<£<1

選擇乙個步長(step) ,然後按間隔為步長的單元進行排序.遞迴,步長逐漸變小,直至為1.

箱排序bin sort

o(n)

設定若干個箱子,把關鍵字等於 k 的記錄全都裝入到第 k 個箱子裡 ( 分配 ) ,然後按序號依次將各非空的箱子首尾連線起來 ( 收集 ) 。

分配排序的一種:通過 " 分配 " 和 " 收集 " 過程來實現排序。

桶排序bucket sort

o(n)

桶排序的思想是把 [0 , 1) 劃分為 n 個大小相同的子區間,每一子區間是乙個桶。

各種排序演算法時間複雜度

各種排序演算法比較 各種常用排序演算法 類別排序方法 時間複雜度 空間複雜度 穩定性複雜性 特點最好 平均最壞 輔助儲存 簡單插入 排序直接插入 o n o n2 o n2 o 1 穩定簡單 希爾排序 o n o n1.3 o n2 o 1 不穩定複雜 選擇排序 直接選擇 o n o n2 o n2...

各種排序演算法時間複雜度及空間複雜度

平均o n 2 最壞o n 2 最好o n 輔助記憶體o 1 穩定排序 最好情況是加了改進方法的最好 即冒泡的過程中檢查是否發生了交換,如果沒有發生交換,說明都排好序了,就break 插入 平均o n 2 最壞o n 2 最好o n 輔助記憶體o 1 穩定排序 直接選擇排序 平均o n 2 最壞o ...

各種排序演算法比較 時間複雜度,空間複雜度

n 2表示n的平方,選擇排序有時叫做直接選擇排序或簡單選擇排序 排序方法平均時間最好時間最壞時間 桶排序 不穩定 o n o n o n 基數排序 穩定 o n o n o n 歸併排序 穩定 o nlogn o nlogn o nlogn 快速排序 不穩定 o nlogn o nlogn o n ...