常見排序方法的對比

2021-10-05 16:27:59 字數 1483 閱讀 4990

排序方法

空間複雜度

時間複雜度

穩定適用範圍

直接插入排序o(1)

o(nlogn) – o(n2) – o(n2)

穩定基本有序+小陣列

折半插入排序o(1)

平均–o(n2)

穩定相比直接插入,比較次數變少,但是插入次數不變

希爾(增量)排序o(1)

根據增量變化o(n1.25)~o(1.6xn1.25)

不穩定大陣列,n越大優勢越大

氣泡排序o(1)

o(n2)

穩定小陣列

快速排序(對冒泡的改進)o(1)

o(nlogn) – o(nlogn) – o(n2)

不穩定(出於效能上的考慮,犧牲了演算法的穩定性)

在序列有序或者逆序的情況下最不利於發揮其長處

選擇排序o(1)

o(n2)

不穩定性能差,穩定差,陣列小

堆排序o(1)

o(nlogn)

不穩定求最大(小)的m個

基數排序最壞o(kn)

o(n+b),其中n為待排序元素個數,而b是桶數

穩定桶數少的情況

歸併排序o(n)

o(nlogn)

穩定快速+穩定,犧牲空間換時間

總結:

1.空間複雜度:除了基數排序(桶)和歸併排序,其他的都是o(1)。歸併很容易是o(n),犧牲空間換時間。基數排序最壞則是o(kn)。

2.時間複雜度(效能):最好的則是堆排序和歸併排序,最好最壞都是線性對數階o(nlogn)。最差的是氣泡排序和選擇排序,最好最壞都是平方階o(n2)。希爾排序效能取決於陣列的大小和增量選擇,陣列越大價效比越高(突然想到小公尺)。直接插入排序和折半插入排序則取決於小陣列是否有序,有序價效比高。快速排序恰恰相反,有序或者逆序的情況下價效比低。(插入和快排妥妥的死對頭)。

3.穩定性:基於選擇(找出最大最小)的排序方法,比如簡單選擇排序,堆排序都是不穩定的。希爾排序和快排也是不穩定的。剩下的都穩定。(不穩定的4個)

4.適用範圍:

小陣列:選擇冒泡、插入、選擇等簡單排序方法;

大陣列:希爾排序等;

有序:直接插入和折半插入;

無序:快排;

效能好:歸併和堆排序;

只求最大(小)幾個:堆排序。

幾種常見的排序演算法對比

幾種常見的排序演算法對比 排序法 平均時間 最差情形 穩定度額外空間 備註 冒泡o n2 o n2 穩定o 1 n 小時較好 交換 o n2 o n2 不穩定o 1 n 小時較好 選擇 o n2 o n2 不穩定o 1 n 小時較好 插入 o n2 o n2 穩定o 1 大部分已排序時較好 基數 o...

幾種常見的排序演算法對比

排序法 平均時間 最差 情形 穩 定度 額外 空間 備註 冒泡o n 2 o n 2 穩定 o 1 n 小時較好 交換 o n 2 o n 2 不穩定o 1 n 小時較好 選擇 o n 2 o n 2 不穩定o 1 n 小時較好 插入 o n 2 o n 2 穩定 o 1 大部分已排序時較好 基數 ...

常見的排序演算法效能對比

排序法 平均時間 最差情形 穩定度額外空間 備註冒泡 o n2 o n2 穩定 o 1 n小時較好 交換 o n2 o n2 不穩定o 1 n小時較好 選擇 o n2 o n2 不穩定o 1 n小時較好 插入 o n2 o n2 穩定 o 1 大部分已排序時較好 基數o logrb o logrb ...