經典排序算法總結

排序算法是離散數學和數據結構學科最基本的算法,雖然知道這些排序算法的名字,但是一直沒有研究過它們的實現原理。現在把它們收集起來,並一一親自實現,來加深對排序算法的理解。

1,冒泡排序:最簡單的排序算法,從第一個元素開始比較相鄰元素大小,如果前邊元素大於後邊元素則交換位置,否則將下標移到下一個元素,一直到最後一個元素爲止;然後進行其他輪次的比較,直到沒有元素交換結束。http://blog.csdn.net/aitazhixin/article/details/62040803

另外一種改進的冒泡排序算法爲,將上一輪次比較中,最後一次元素交換的位置標記,作爲下面一輪次比較的終點。http://blog.csdn.net/aitazhixin/article/details/62043245


2,插入排序:假設元素m之前的所有元素已排好順序,則在排好序的子序中查找m的位置,然後插入m,得到一個增量的子序,循環下標到最後一個元素爲止。http://blog.csdn.net/aitazhixin/article/details/62042293


3,選擇排序:從未排序的序列中選擇最小的元素,與第一個元素交換位置,然後對剩餘的未排序子序進行相同的操作。

http://blog.csdn.net/aitazhixin/article/details/62043950


4,快速排序:快速排序採用分治遞歸的思想,首先選取一個參考元素(比如第一個元素),然後將剩餘的元素分成兩部分:一部分所有元素都小於參考元素,一部分所有元素都大於參考元素,然後將參考元素插入到分界點;對於分開的兩部分,遞歸採用同樣的方法獲取分類,最終將獲取到完整排序的數列。http://blog.csdn.net/aitazhixin/article/details/62045826


5,歸併排序:基本原理是將兩個已排序的數列歸併成一個排序的數列,我採用了三元體的方式,在合併時做到整體插入。http://blog.csdn.net/aitazhixin/article/details/62053785


6,二叉排序樹:基本思想是將序列中的數讀入一個二叉樹,在讀入時遵循一定的規則:比如,如果二叉樹的一個節點有左子節點,那麼左子節點一定比父節點的值小;如果一個節點有右子節點,那麼右子節點一定比父節點的值大。在二叉排序樹製造完成後,通過採用中序遍歷的方法讀取二叉樹節點的值到序列中,就可以得到一個升序序列。http://blog.csdn.net/aitazhixin/article/details/62229996


7,堆排序:基本原理是每次構造一個小頂堆,那麼堆的根節點就是序列的最小值,然後利用剩餘的元素再構造一個小頂堆,獲得第二個較小的元素,遞歸運行直到剩餘1個元素返回,最終將得到升序排列的序列。http://blog.csdn.net/aitazhixin/article/details/62416238












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章