排序演算法 python實現希爾排序

2021-10-21 21:45:57 字數 874 閱讀 2101

#coding:utf-8

#希爾排序,穩定性:是不穩定的

defshell_sort

(alist)

: n=

len(alist)

gap=n//

2#取步長,總長度除2,取整數

# i=gap

# for i in range(gap,n):

# i=[gap,gap+1,gap+2,gap+3+...+n-1]

# while:

# if alist[i]# alist[i],alist[i-gap]=alist[i-gap],alist[i]

while gap>0:

#插入演算法,與普通的插入演算法相比,就是多了步長

for j in

range

(gap,n)

: i=j

while i>0:

if alist[i]

: alist[i]

,alist[i-gap]

=alist[i-gap]

,alist[i]

i-=gap

else

:break

gap//=

2#必須要有步長,沒有將進入死迴圈

if __name__==

"__main__"

: li =[17

,20,93

,54,77

,31,44

,55,226

]print

(li)

shell_sort(li)

print

(li)

006 排序演算法 希爾排序

一 概述 希爾排序 shell s sort 是插入排序的一種又稱 縮小增量排序 diminishing increment sort 是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因d.l.shell於1959年提出而得名。排序方法 時間複雜度 平均 時間複雜度 最...

python之希爾排序演算法實現

usr bin env python coding utf 8 author richard kong 希爾排序 shell sort 是插入排序的一種,也稱為縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。希爾排序是非常穩定的排序演算法 希爾排序是把記錄按下錶的一定增量分組,對每組使用直...

演算法 希爾排序及其Python實現

希爾排序思想 有點類似歸併可以分為兩步 1 拆分 2 排序。並且不斷重複這兩個步驟。拆分 gap將資料拆成乙個個小的邏輯小組,並且gap不斷減少。一開始每個組最多只有2個元素,最後慢慢變成整體資料的一半,然後變成整體。而gap從一開始的int len 2 最後變為2.排序 對每個小組進行插入排序。思...