Python八大排序(四) 希爾排序

2021-09-26 16:26:14 字數 596 閱讀 3535

**如下:

#4.希爾排序(插入排序)

#思想:將待排序陣列按照步長gap進行分組,然後將每組的元素利用直接插入排序的方法進行排序,每次將gap折半減小,迴圈上述操作。

#當gap=1時,利用直接插入,完成排序。

def shell_sort(num_list):

length = len(num_list)

gap = length // 2

while gap >= 1:

for j in range(gap,length):

i = j

while(i - gap) >= 0:

if num_list[i] < num_list[i - gap]:

num_list[i],num_list[i-gap]=num_list[i-gap],num_list[i]

i -= gap

else:

break

gap //=2

return num_list

print(shell_sort(num_list=[21,34,54,12,32,11,33,66,17]))

八大排序 希爾排序

希爾排序 shell sort 是插入排序的一種。是直接插入排序的改進版,它是非穩定排序演算法。其得名於它的提出者d.l.shell,shell sort等演算法的提出打破了 排序演算法不可能突破o n 2 的魔咒,它將排序演算法的時間複雜度提成到了o nlogn 不可能超越的o n 2 徹底成為了...

八大排序 希爾排序

希爾排序 shell s sort 是插入排序的一種 又稱為 縮小增量排序 diminishing increment sort 是直接插入排序演算法的一種更高效的改進版本。希爾排序是不穩定的排序演算法。希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序演算法排序 隨著增量的逐漸減少,每組...

八大排序演算法 希爾排序

希爾的定義 希爾排序是插入演算法的一種,也叫縮小增量排序。是直接插入排序演算法的一種改良版。希爾演算法是把資料序列按下標的一定增量分組,對每組使用直接插入排序演算法進行排序 然後依次縮減增量再進行排序,待整個序列中的元素基本 注 沒有全部完成排序 有序時,再對全體元素進行一次直接插入排序。基本思想 ...