希爾排序Python實現

2021-08-09 11:47:36 字數 410 閱讀 6302

python 實現 希爾排序, 希爾排序其實 就是 插入排序的改進版吧,希爾排序的步長選擇都是從d=len/2開始,每次再減半,直到最後為1,當變為1的時候 ,可以認為就是簡單的插入排序。這種縮小步長的好處,非常簡單,彌補了插入排序的缺點,盡可能減少數字的移動次數。希爾思想是這樣 區域性看起來有序,然後區域性的區域性在有序,直到 步長為1,就保證了不會出現,待排序列都是逆序的情況。 這種想法非常高明,佩服希爾。

希爾排序按其設計者 希爾(donald shell)的名字命名,該演算法由2023年公布。一些老版本教科書和參考手冊把該演算法命名為shell-metzner,即包含marlene metzner norton的名字,但是根據metzner本人的說法,「我沒有為這種演算法做任何事,我的名字不應該出現在演算法的名字中。」

希爾排序是基於插入排序的以下兩點性質而提出改進方法的:

希爾排序 Python實現

基本思想 希爾排序 def shell insert sort a,dk n len a for k in range dk 間距取dk,一共可以組成dk個子序列 for i in range k dk,n,dk 第0,dk,2dk.為一組 temp a i 記錄待插入的元素值 j i dk 子串行...

希爾排序 python實現

希爾排序的基本思想是 將陣列列在乙個表中並對列分別進行插入排序,重複這過程,不過每次用更長的列 步長更長了,列數更少了 來進行。最後整個表就只有一列了。將陣列轉換至表是為了更好地理解這演算法,演算法本身還是使用陣列進行排序。def shell sort alist 希爾排序 param alist ...

Python實現希爾排序

希爾排序的基本思想是 將陣列列在乙個表中並對列分別進行插入排序,重複這過程,不過每次用更長的列 步長更長了,列數更少了 來進行。最後整個表就只有一列了。將陣列轉換至表是為了更好地理解這演算法,演算法本身還是使用陣列進行排序。希爾排序 n len alist 初始步長 gap n 2 while ga...