思路
-
希尔排序是一种分组排序算法
-
首先取一个整数d1=n/2,将元素分为d1个组,每组相邻两元素之间距离为d1,在各组内进行插入排序
-
取第二个整数d2=d1/2,重复上述分组排序过程直到di=1,即所有元素在同一个组内进行直接插入排序
-
希尔排序每趟并不使某些元素有序,而是使整体数据越来越接近有序;最后一趟排序使得所有数据1有序
代码
def insert_sort_gap(li,gap):
for i in range(gap, len(li)):
tmp = li[i]
j = i - gap
while j >= 0 and li[j] > tmp:
li[j+gap] = li[j]
j = j - gap
li[j+gap] = tmp
def shell_sort(li):
d = len(li)//2
while d >= 1:
insert_sort_gap(li, d)
d = d // 2
li=[34,2,3,1,4,23,55,32,7,6,9,8]
shell_sort(li)
print(li)