本文對比較常用且比較高效的排序算法進行了總結(jié)和解析,,并貼出了比較精簡的實現(xiàn)代碼,,包括選擇排序、插入排序,、歸并排序,、希爾排序、快速排序等,。算法性能比較如下圖所示:
選擇排序的第一趟處理是從數(shù)據(jù)序列所有n個數(shù)據(jù)中選擇一個最小的數(shù)據(jù)作為有序序列中的第1個元素并將它定位在第一號存儲位置,第二趟處理從數(shù)據(jù)序列的n-1個數(shù)據(jù)中選擇一個第二小的元素作為有序序列中的第2個元素并將它定位在第二號存儲位置,,依此類推,,當(dāng)?shù)趎-1趟處理從數(shù)據(jù)序列的剩下的2個元素中選擇一個較小的元素作為有序序列中的最后第2個元素并將它定位在倒數(shù)第二號存儲位置,至此,,整個的排序處理過程就已完成,。
代碼如下:
直接插入排序法的排序原則是:將一組無序的數(shù)字排列成一排,,左端第一個數(shù)字為已經(jīng)完成排序的數(shù)字,,其他數(shù)字為未排序的數(shù)字。然后從左到右依次將未排序的數(shù)字插入到已排序的數(shù)字中,。
代碼如下:
算法描述: 把序列分成元素盡可能相等的兩半。 把兩半元素分別進行排序,。 把兩個有序表合并成一個,。
代碼如下:
希爾排序又稱“縮小增量排序”,,該方法的基本思想是:先將整個待排元素序列分割成若干個子序列(由相隔某 個“增量”的元素組成的)分別進行直接插入排序,,然后依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠?。r,,再對全體元素進行一次直接插 入排序,。因為直接插入排序在元素基本有序的情況下(接近最好情況),效率是很高的,,因此希爾排序在時間效率上比前兩種方法有較大提高,。
代碼如下:
快速排序(Quicksort)是對冒泡排序的一種改進,。由C. A. R. Hoare在1962年提出,。它的基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,,然 后再按此方法對這兩部分?jǐn)?shù)據(jù)分別進行快速排序,,整個排序過程可以遞歸進行,以此達到整個數(shù)據(jù)變成有序序列,。
代碼如下:
原文鏈接:http://www./article/5-sort-algorithm.html
|