九種常用排序的效能分析總結

2021-06-26 01:42:07 字數 1849 閱讀 4755

間間斷斷的將9種排序實現,並且將其以部落格筆記的形式記錄下來;現在就該來綜合的分析這九種排序,讓我們先來看看其演算法複雜度和穩定性的分析結果:

演算法複雜度以及穩定度分析

演算法名稱

平均時間

輔助空間

穩定性氣泡排序

o(n2)

o(1)

是選擇排序

o(n2)

o(1)

否插入排序

o(n2)

o(1)

是自底向上歸併排序

o(nlog2n)

o(n)

是自頂向下歸併排序

o(nlog2n)

o(n)

是快速排序

o(nlog2n)

o(n)

否堆排序

o(nlog2n)

o(1)

否基數排序

o(dn)

o(rn)

是希爾排序

\o(1)否

排序的時間效率比較

下圖表名了各種演算法在不同資料規模下,完成排序所消耗的時間(毫秒為單位),從表中可以顯然看出o(n2)的排序演算法比o(nlog2n)的演算法 時間多出幾百上千倍,而且隨著資料資料規模增大時間比也會隨著增大;因為排序的資料採用隨機數,順序將被打亂,快速排序演算法優於其他排序演算法!

演算法名稱

1萬2萬

3萬4萬

5萬6萬

7萬8萬

9萬10萬

氣泡排序

1442

5497

12206

21861

34017

49148

67394

88880

111939

139071

選擇排序

199816

1790

3254

5062

7166

9645

12636

16102

19643

插入排序

178717

1628

2882

4458

6446

8822

11649

14547

17914

自底向上歸併排序36

9121518

2226

2833

自頂向下歸併排序37

1115

1823

2731

3640

快速排序25

8111418

2125

2932

堆排序3712

1619

2326

3034

37基數排序921

3040

4959

6675

9098

希爾排序38

1115

2424

2935

4041

下面採用圖表形式將資料直觀展示出來(將o(n2)的演算法和o(nlog2n)演算法分開,因為完全不是乙個數量級的):

上圖顯示快排速度和自底向上歸併排序奇虎相當,接下來是堆排序、希爾排序;出乎意料的是基數排序,號稱o(dn)的基數排序卻不是那麼靠前,個人覺得和氣泡排序速度慢的原因相同,賦值操作太多,降低了時間效率。

**:

Algorithm 九種常用排序的效能分析

最近間間斷斷的將9種排序演算法用c實現,並且將其以部落格筆記的形式記錄下來,其中各個排序演算法的描述部分特別參考了csdn上太陽落雨 的部落格!現在就該來綜合的分析這九種排序,讓我們先來看看其演算法複雜度和穩定性的分析結果 下圖表名了各種演算法在不同資料規模下,完成排序所消耗的時間 毫秒為單位 從表...

常用排序演算法效能分析

在平時寫 時比較常用的幾種演算法,效能 如下 排序法 平均時間 最壞 穩定額外空間 氣泡排序 o n 2 o n 2 穩定 o 1 選擇排序 o n 2 o n 2 不穩定 o 1 插入排序 o n 2 o n 2 穩定 o 1 快速排序 o nlogn o n o n 2 不穩定 o nlogn ...

七種常用排序演算法總結

1.氣泡排序 bubble sort package com.zha.wmls.sort 氣泡排序 每一輪找出乙個最大的,放在最後面,穩定 時間複雜度為n 2 public class bubblesort long befortime system.currenttimemillis sort a...