希尔排序(Shell Sort)是插⼊排序的⼀种。也称缩⼩增量排序,是直接插⼊排序算法的⼀种更⾼效的改进版本。希尔排序是⾮稳定排序算法。 希尔排序是把记录按下标的⼀定增量分组,对每组使⽤直接插⼊排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减⾄1时,整个⽂件恰被分成⼀组,算法便终⽌。
def shell_sort(alist):
n = len(alist)
gap = n // 2
while gap > 0:
for i in range(gap, n):
while (i-gap) >= 0:
if alist[i] < alist[i-gap]:
alsit[i], alist[i-gap] = alist[i-gap], alist[i]
i -= gap
gap //= 2
lis = [54, 26, 93, 17, 77, 31, 44, 55, 20]
shell_sort(alist)
print(alist)