常見的排序演算法 總結(待完成)

2022-05-05 07:12:10 字數 1705 閱讀 9688

最近總結了以下排序演算法:

插入排序:直接插入排序,希爾排序

交換排序:氣泡排序,快速排序(挖坑法,前後指標法,左右指標法)

選擇排序:直接選擇排序,堆排序

歸併排序

所以想對這些排序演算法再做乙個對比。

一、理論值對比

(參考: 這篇總結了各種排序演算法的實現思想,也是我自己需要完善的地方)

排序法最差時間分析

平均時間複雜度

穩定度空間複雜度

氣泡排序

o(n2)

o(n2)

穩定o(1)

快速排序

o(n2)

o(n*log2n)

不穩定o(log2n)~o(n)

選擇排序

o(n2)

o(n2)

不穩定o(1)

二叉樹排序

o(n2)

o(n*log2n)

不一頂o(n)

插入排序

o(n2)

o(n2)

穩定o(1)

堆排序o(n*log2n)

o(n*log2n)

不穩定o(1)

希爾排序oo

不穩定o(1)

(希爾排序可以參考這篇:

二、執行時間對比

歸併排序:o(nlog2n)

2000個元素時:

20000個元素時:

50000個元素時:

100000個元素時:

從上面結果可以看出:直接插入排序(direct_insert)、直接選擇排序(select_direct)、氣泡排序(bubble)耗時隨著資料量的增加,耗時增加的非常快。

接下來,我們再來對比其他幾種排序演算法的耗時:

200000個元素:

500000個元素:

1000000個元素:

2000000個元素:

10000000個元素:

從上面的結果可以看出來:快速排序(挖坑法,前後指標法,左右指標法)的耗時最少,歸併排序(merge)其次,堆排序(heap)和希爾排序(shell)最多。

結論:一般來說,當資料規模較小時,應該選擇直接插入排序或氣泡排序。快速排序是一種不穩定的排序,但是對於大部分已經排好的資料,快速排序會浪費大量不必要的步驟。快速排序適用於大量隨機資料的情況。

各種排序演算法總結(待完成)

參考 http blog.csdn.net sturun archive 2008 12 11 3491225.aspx 簡潔,好 http blog.csdn.net yuguanglou archive 2004 11 24 193133.aspx 類模板 參考演算法i iv基礎 資料結構 排序...

常見的排序演算法總結

include 演算法只是比較了元素為整數的內容.大部分的排序只是做了簡單的測試.僅供參考.void swap int a int b bool less int a,int b 對內部中的元素先找到k值,然後分兩塊 int partition int r,int lo,int hi while j...

常見的排序演算法總結

平時一直做專案,業務邏輯,對演算法這塊逐漸有了生疏 今天有空總結一下排序演算法 1 氣泡排序 氣泡排序的原理就是兩兩相比,從小到大的話前面比後面大就交換,從大到大的話前面比後面小就交換,比如有一組數 1,10,5,3,2 如何對它做排序 比如從小到大 第一步 1,10,5,3,2 源資料 1,10,...