希爾排序 python

2021-10-06 11:22:38 字數 801 閱讀 1903

'''

插入排序的高階版

按照步長n將資料分成n個序列,每個序列進行插入排序

完成上述排序,減小步長(一半),繼續進行插入排序

重複上述步驟,直至步長變為1。

'''def

shellsort

(list):

step =

len(

list)//

2while step >0:

for i in

range

(step,

len(

list))

: index = i

while index > step-1:

iflist

[index]

<

list

[index-step]

:list

[index]

,list

[index-step]

=list

[index-step]

,list

[index]

index = index-step

else

:break

step = step //

2print

(list

)if __name__ ==

'__main__'

: a =[12

,34,15

,2,48

,45,231,5

,13] shellsort(a)

Python 希爾排序

coding utf 8 希爾排序 def shellsort list list 4,1,9,13,34,26,10,7,4,3 m len list 元素數目 gap m 2 gap 5,2,1.while gap 0 print gap 列表中的list i 按間隔gap從列表中取元素list...

Python 希爾排序

希爾排序也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本,希爾排序的核心思想是 先將陣列分割成若干個子串行,分別進行直接插入排序,然後一次縮減增量再進行排序,直至增量為零,然後對全體進行一次直接插入排序。增量也叫分組步長,第一次為len array 2 第二次為 len array 2 ...

Python 希爾排序

希爾排序的基本思想是 將陣列列在乙個表中並對列分別進行插入排序,重複這過程,不過每次用更長的列來進行。最後整個表就只有一列了。將陣列轉換至表是為了更好的理解這演算法,演算法本身還是使用陣列進行排序。例如,假設有這樣一組數 13,14,94,33,82,25,59,94,65,23,45,27,73,...