一.冒泡排序
冒泡排序是非常容易理解和實現(xiàn),以從小到大排序舉例:
設數(shù)組長度為N。
1.比較相鄰的前后二個數(shù)據(jù),如果前面數(shù)據(jù)大于后面的數(shù)據(jù),就將二個數(shù)據(jù)交換。
2.這樣對數(shù)組的第0個數(shù)據(jù)到N-1個數(shù)據(jù)進行一次遍歷后,最大的一個數(shù)據(jù)就“沉”到數(shù)組第N-1個位置。
3.N=N-1,如果N不為0就重復前面二步,否則排序完成。
二.直接插入排序
直接插入排序(Insertion Sort)的基本思想是:每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子序列中的適當位置,直到全部記錄插入完成為止。
三.直接選擇排序
直接選擇排序和直接插入排序類似,都將數(shù)據(jù)分為有序區(qū)和無序區(qū),所不同的是直接插入排序是將無序區(qū)的第一個元素直接插入到有序區(qū)以形成一個更大的有序區(qū),而直接選擇排序是從無序區(qū)選一個最小的元素直接放到有序區(qū)的最后。
四.希爾排序
希爾排序的實質就是分組插入排序。
該方法的基本思想是:先將整個待排元素序列分割成若干個子序列(由相隔某個“增量”的元素組成的)分別進行直接插入排序,然后依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠?。r,再對全體元素進行一次直接插入排序。因為直接插入排序在元素基本有序的情況下(接近最好情況),效率是很高的,因此希爾排序在時間效率上比前兩種方法有較大提高。
五.歸并排序
歸并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個非常典型的應用。
首先考慮下如何將將二個有序數(shù)列合并。這個非常簡單,只要從比較二個數(shù)列的第一個數(shù),誰小就先取誰,取了后就在對應數(shù)列中刪除這個數(shù)。然后再進行比較,如果有數(shù)列為空,那直接將另一個數(shù)列的數(shù)據(jù)依次取出即可。
再來看歸并排序,其的基本思路就是將數(shù)組分成二組A,B,如果這二組組內的數(shù)據(jù)都是有序的,那么就可以很方便的將這二組數(shù)據(jù)進行排序。如何讓這二組組內數(shù)據(jù)有序了?
可以將A,B組各自再分成二組。依次類推,當分出來的小組只有一個數(shù)據(jù)時,可以認為這個小組組內已經達到了有序,然后再合并相鄰的二個小組就可以了。這樣通過先遞歸的分解數(shù)列,再合并數(shù)列就完成了歸并排序。
六.快速排序
http://blog.csdn.net/morewindows/article/details/6684558
該方法的基本思想是:
1.先從數(shù)列中取出一個數(shù)作為基準數(shù)。
2.分區(qū)過程,將比這個數(shù)大的數(shù)全放到它的右邊,小于或等于它的數(shù)全放到它的左邊。
3.再對左右區(qū)間重復第二步,直到各區(qū)間只有一個數(shù)。