1. 程式人生 > >(考研必看)最全資料結構排序演算法效能分析與比較!!!

(考研必看)最全資料結構排序演算法效能分析與比較!!!

資料結構所有排序演算法效能分析與比較 轉載請標明出處weixin_44254963或璇小姐

通過對資料結構的學習,我發現數據結構中各種排序演算法的排序方法,過程,以及時間效能,空間效能都比較容易混淆,現就這些情況做如下總結,希望對大家有所幫助。

起泡排序(氣泡排序)

首先取第一個數與第二個數比較,若一大於二,則兩數進行交換,若數一小於數二,則將第二個數與第三個數相比較,若數二小於數三,則不交換,若數二大於數三,則將數二與數三交換,以此類推,一直到最後一個數,則氣泡排序第一趟結束,此時這個序列的最後一個數就是這個序列的最大值,然後在從這個新序列的第一個數開始,繼續比較,若一大於二,則兩數進行交換,若數一小於數二,則將第二個數與第三個數相比較,若數二小於數三,則不交換,若數二大於數三,則將數二與數三交換,以此類推,一直到最後一個數,則氣泡排序第二趟結束

,以此類推,直到此數列有序。

##氣泡排序舉例
對數列9 8 5 4 2 0 進行排序
第一趟排序
9 8 5 4 2 0
8 9 5 4 2 0
8 5 9 4 2 0
8 5 4 9 2 0
8 5 4 2 9 0
8 5 4 2 0 9
第二趟排序
8 5 4 2 0 9
5 8 4 2 0 9
5 4 8 2 0 9
5 4 2 8 0 9
5 4 2 0 8 9
以此類推

###直接插入排序
對一個序列進行直接插入排序,從右邊第一個數開始依次進行比較,將右邊第一個數放在左邊,將右邊第二個數和左邊的數進行比較,若第二個數大,則放在第一個數的右邊,若第二個數比第一個數小,則放在第一個數的左邊,在取右邊序列的第三個數,和左邊的兩個數進行比較,若比前兩個數大,則放在左邊序列第三個位置,若比前兩個數小,則放在左邊序列第一個位置。依次類推,直到結束。

###直接插入排序舉例

專案 Value
有序 待排序
9 3 1 4 2 7 8 6 5
9 3 1 4 2 7 8 6 5
3 9 1 4 2 7 8 6 5
1 3 9 4 2 7 8 6 5
1 3 4 9 2 7 8 6 5
1 2 3 4 9 7 8 6 5
1 2 3 4 7 9 8 6 5
1 2 3 4 7 8 9 6 5
1 2 3 4 6 7 8 9 5
1 2 3 4 5 6 7 8 9

###折半插入排序
對序列4 6 9 12 14 18 23中用折半插入排序演算法插入15
n=7 (n+1)/2=4
所以用15和數列中第四個數進行比較,若15比第四個數大,則對數列右邊進行折半插入排序,若15比第四個數小,則對數列左邊繼續進行折半插入排序,依次類推。
4 6 9 12 14 18 23 (15>12)
4 6 9 12 14 18 23 (15<18)
4 6 9 12 14 15 18 23 (15>14)

###希爾排序
對一個序列進行希爾排序,首先看序列要求的增量為多少
增量的計算方法為 increment=(n/3)(向下取整)+1
n為元素個數
計算出增量之後,從數列第一個元素開始,第一個數與與它相隔包括它自身三個元素的元素為一組,第二個元素也與與它相隔包括它自身三個元素的元素為一組,以此類推,然後比較每一小組的大小,若左邊大於右邊,則交換兩個元素位置,否則不交換,然後按照變換後的順序輸出。

###希爾排序舉例
21 25 49 25* 16 08
子序列 21 25*
子序列 25 16
子序列 49 08
合成序列21 16 08 25* 25 49

#簡單選擇排序
對一個序列進行簡單選擇排序,從一個數列中選擇一個最小值與數列第一個數交換位置,此時第一個數為整個數列最小值,該元素已經到達了該序列的最終位置,在從第二個元素開始到最後一個元素,選擇其中的最小值,將其與序列第二個元素交換,以此類推。

###簡單選擇排序舉例
初始態49 38 65 97 76 13 27 49
13 【38 65 97 76 49 27 49】
13 27 【65 97 76 49 38 49】
13 27 38 【97 76 49 65 49】
13 27 38 49 【76 97 65 49】
13 27 38 49 49 【97 65 76】
13 27 38 49 49 65 【97 76】
13 27 38 49 49 65 76 【 97】

###快速排序
對一個序列進行快速排序,將序列第一個元素取出作為軸元素,此時序列第一個位置為空,然後從數列最後一個元素開始,和軸元素進行比較,若比軸元素大,則位置前移,將倒數第二個元素與軸元素進行比較,若比軸元素小,則將數儲存在第一個空位置上,此時該元素位置為空,然後同時將指向後移,指向第二個元素,以此類推。

###快速排序舉例
6 1 5 3 2 4
4 1 5 3 2

##基數排序
將所有元素寫位一列,然後將所有位對齊,從最低位開始比較,直到最後一位
2 5 4 6
1 5 8 9
3 5 9

千位比較
3 5 9
1 5 8 9
2 5 4 6

百位比較
3 5 9
1 5 8 9
2 5 4 6

十位比較
2 5 4 6
3 5 9
1 5 8 9

個位比較
2 5 4 6
3 5 9
1 5 8 9