最近間間斷斷的將9種排序演算法用c實現,並且將其以部落格筆記的形式記錄下來,其中各個排序演算法的描述部分特別參考了csdn上太陽落雨
的部落格!現在就該來綜合的分析這九種排序,讓我們先來看看其演算法複雜度和穩定性的分析結果:
下圖表名了各種演算法在不同資料規模下,完成排序所消耗的時間(毫秒為單位),從表中可以顯然看出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
[1]
[2]
Algorithm 排序演算法
閒來無事回顧一下原來所學的排序演算法,包括冒泡 選擇 插入 希爾 快速 歸併排序,這六種。首先依次講解原理,最後放出實現及測試速度原始碼。我想大部分人學習的第乙個排序演算法就是這個。顧名思義,如泡泡般,越到水面就越大,即經過連續不斷的判斷,選取大 或小 的值進行交換,一輪結束後,未排序資料最後面的就...
Algorithm 選擇排序
選擇排序 比如在乙個長度為n的無序陣列中,在第一趟遍歷n個資料,找出其中最小的數值與第乙個元素交換,第二趟遍歷剩下的n 1個資料,找出其中最小的數值與第二個元素交換.第n 1趟遍歷剩下的2個資料,找出其中最小的數值與第n 1個元素交換,至此選擇排序完成。舉個例子 5 7 6 4 3 8 第一趟 3 ...
九種排序演算法
一 插入排序 直接插入排序 以從小到大排序為例 void insertsort int a,int len 直接插入排序最好的情況就是不需要移動,直接就是乙個從大到小排好的順序,那麼就只需要比較一遍就可以了 不需要移動 交換 時間複雜度為o n 最差的情況下需要全部移動一遍,就是按照從小到大的順序排...