Python 希爾排序法


#希爾排序法

一、希爾排序法是一種插入排序。

它是簡單插入排序經過改進之后的一個更高效的版本,也稱為縮小增量排序。

二、基本思想:

希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序算法排序;

隨着增量逐漸減少,每組包含的關鍵詞越來越多,當增量減至1時,整個文件恰被分成一組,算法便終止。

三、基本步驟:

我們選擇增量gap=length/2,縮小增量繼續以gap = gap/2的方式,

這種增量選擇我們可以用一個序列來表示,{n/2,(n/2)/2...1},稱為增量序列

四、參考網址:https://www.cnblogs.com/chengxiao/p/6104371.html

五、Python代碼:

#希爾排序
def shellSort(arr):
  n=len(arr) #數列元素個數
  gap=int(n/2) #從中間元素開始

  while gap>0: 
    for i in range(gap,n): 從中間往后依次比較
      temp=arr[i]
      j=i

      while j>=gap and arr[j-gap]  temp: #">"由小到大排序;"<"由大到小排序
        arr[j]=arr[j-gap]
        j-=gap
        arr[j]=temp

    gap=int(gap/2) #再次


#測試
arr=[12,34,54,2,3,0,10,15,11]
n=len(arr)
shellSort(arr)
print("\n排序后:")
for i in range(n):
print(arr[i])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM