數據結構與算法(2)排序

  

一、直接插入排序

(1)簡介:直接插入排序,從字面意思能夠看出,直接插入數據完成排序。算法

(2)基本思想:在插入第i個數時,假設前i-1數已經排好序了,只須要將第i個數插入到i-1中,使得這i個數也是順序的。數組

(3)例如:數據結構

                              

二、希爾排序(Shell排序)

(1)簡介: 希爾排序又稱爲縮小增量排序,是對直接插入排序方法的改進。設計

(2)基本思想:將整個序列分紅多個子序列,而後分別進行直接插入排序,直到整個序列中的全部數基本有序時,再對總體進行一次直接插入排序。排序

(3)例如:索引

                             

三、簡單選擇排序

(1)簡介:簡單選擇排序也叫直接選擇排序,其實說白了跟直接插入排序的道理特別簡單,效率低。效率

(2)基本思想:首先在 n個數中選擇一個最小的數,並將它從中刪除,做爲新的一組數的第一個;再在剩下的數中選擇最小的數,將它從中刪除,做爲新的一組數的第二個。如此反覆,直到排序完成,最後獲得一組從小到大排序的數。二叉樹

(3)例如:遍歷

                          

四、堆排序

(1)簡介:堆排序是一個至關有用的排序技術,特別適用於對大量的記錄進行排序。同時,堆排序也是對簡單選擇排序的改進。方法

  堆的定義:n個元素的序列{K1,K2,...,Kn}當知足下列關係時,稱爲堆:Ki≤K2i且Ki≤K2i+1或者Ki≥K2i且Ki≥K2i+1。注意:堆樹必須是一顆徹底二叉樹。

(2)基本思想:利用堆積樹這種數據結構所設計的一種排序,能夠利用數組的特色快速的定位指定索引的元素。

  最大堆:父結點大於或等於兒子結點

                         

  最小堆:父結點小於或等於兒子結點

                         

(3)例如:

將序列{20,60,26,30,36,10}調整爲遞增序列。

一、首先將數據創建徹底二叉樹,填充規則是按層次遍歷將數據一一填入,最後構建最小堆;

                         

二、提取堆頂並調整刪除隊頂後的元素爲新堆;

三、重複第2步,直到堆空;

                        

四、每次提取的堆頂依次排序即爲遞增序列。

                     

五、冒泡排序

(1)簡介:冒泡排序,就跟水裏的物體同樣,小的往上浮,大的往下沉。

(2)基本思想:將數組垂直排列,取出最後一個元素逐個向上交換,獲得大數(小數),繼續步驟一的操做,直到排序完成。

(3)例如:

                       

六、快速排序

(1)簡介:快速排序是目前內部排序中速度最快的一種排序算法。

(2)基本思想:選取一個數據(一般是數組的第一個數)做爲關鍵數據,而後將全部比它小的數都放在它前面,全部比它大的數都放在它後面,這個過程稱爲一趟快速排序,再從分開的部分選取基準數,進行分組劃分,重複執行,直到完成。

(3)例如:

                        

七、歸併排序 

(1)簡介:歸併排序又稱爲二路合併操做,使用合併操做完成排序的算法。

(2)基本思想:將兩個或兩個以上的有序表合併成一個新的有序表,最後將全部的有序表合成一個總體有序表。

(3)例如:

                       

八、基數排序

(1)簡介:前面介紹的排序方法都是對元素進行的,基數排序是對元組進行的。

(2)基本思想:從低位到高位依次對待排序的數進行分配和收集,通過d趟分配和收集,就能夠獲得一個有序序列。

(3)例如:

                     

排序算法對比

                

相關文章
相關標籤/搜索