希爾排序

實質(zhì):插入排序的一種,先實現(xiàn)大步長的交換,再進行小步長的交換。

基本思想:維基百科:“希爾排序通過將比較的全部元素分為幾個區(qū)域來提升插入排序的性能。這樣可以讓一個元素可以一次性地朝最終位置前進一大步。然后算法再取越來越小的步長進行排序,算法的最后一步就是普通的插入排序,但是到了這步,需排序的數(shù)據(jù)幾乎是已排好的了(此時插入排序較快)”。

實現(xiàn)方法:
選擇步長
按照選擇的步長對序列進行排序
縮短步長
返回步驟二繼續(xù)排序,直到步長為1

拓展:
Donald Shell最初建議步長選擇為n/2并且對步長取半直到步長達到1。雖然這樣取可以比O(n^2)類的算法(插入排序)更好,但這樣仍然有減少平均時間和最差時間的余地??赡芟柵判蜃钪匾牡胤皆谟诋斢幂^小步長排序后,以前用的較大步長仍然是有序的。比如,如果一個數(shù)列以步長5進行了排序然后再以步長3進行排序,那么該數(shù)列不僅是以步長3有序,而且是以步長5有序。如果不是這樣,那么算法在迭代過程中會打亂以前的順序,那就不會以如此短的時間完成排序了。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容