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

2022-03-21 14:30:54 字數 1396 閱讀 8656

最好最壞

平均陣列中插入元素

o(1)

每次都在陣列的末尾插入;

o(n)

每次都在陣列的頭部插入;

假設資料量為n。~最好

最壞平均

基本排序

冒泡(無標誌位)

o(n^2)

o(n^2)

o(n^2)

冒泡(有標誌位)

o(1)

說明:已有序,只需1次;

o(n^2)

說明:逆序,標誌位無效。同上

o(n^2)

說明:以有序度作為測量。最好時,有序度為n,逆序度為n(n-1)/2;最差時相反;所以平均是n(n-1)/4;

插入o(n)

說明:已有序,只需比較n次,無需插入;

o(n^2)

說明:逆序,比較n次,插入n次,時間複雜度為o(n^2);

因為:陣列插入的最壞時間複雜度為o(n);

o(n^2)

說明:比較n次不可變,插入的平均時間複雜度:o(n),所以總的平均時間複雜度為o(n^2);

選擇o(n^2)

說明:比較n次,查詢最小元素n次,交換為常量 3;

o(n^2)

說明:同最好;

o(n^2)

遞迴排序

歸併o(nlogn)

說明:遞迴的時間複雜度推算公式見原文。

merge的時間複雜度為o(n)(實際應該是2n);

o(nlogn)

同左o(nlogn)

同左快速

o(nlogn)

說明:遞迴的時間複雜度推算公式見原文。

獲取分割槽點的時間複雜度為o(n)。遍歷整個陣列,然後交換元素。

o(n^2)

特別極端的情況。

o(nlogn)

線性排序

桶o(n)<

說明:實際為o(n*log(n/m))

n為資料總個數,m個桶。

o(nlogn)

只有乙個桶的情況,分析見原文和右邊。

暫無計數

o(n)

就是桶排序中m==n的情況。

同左暫無

基數o(n)

每位使用桶排序或者計數排序,然後位數是常數,所以時間複雜度可以為o(n)。

見桶排序和計數排序

參考:

排序演算法之 氣泡排序 及其時間複雜度和空間複雜度 - yuzhihui_no1的專欄 - csdn部落格

線性時間排序:計數排序、基數排序、桶排序 - mmdnxh的部落格 - csdn部落格 (注:包含**實現,可以參考)

常見排序演算法複雜度

相關概念 1 穩定排序 stable sort 和非穩定排序 穩定排序是指所有相等的數經過某種排序演算法操作後仍然能保持它們在排序之前的相對次序。反之就是非穩定排序。2 內排序 internal sorting 和外排序 external sorting 在排序過程中,所有需要排序的數都在記憶體,並...

常見演算法的時間複雜度

排序方法 平均情況 最好情況 最壞情況 輔助空間 穩定性 氣泡排序 o n 2 o n o n 2 o 1 穩定 選擇排序 o n 2 o n 2 o n 2 o 1 不穩定 插入排序 o n 2 o n o n 2 o 1 穩定 希爾排序o n log n o n 2 o n 1.3 o n 2 ...

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

常數階o 1 無論 執行了多少行,只要沒有迴圈複雜結構,那麼這個的時間複雜度就是o 1 o 1 時間複雜度 沒有迴圈結構的順序執行,無論執行多少行,時間複雜度均為o 1 public static voido1 對數階o log2n o log2n 時間複雜度 此處 i 以二倍的速度增長,也就是說到...