''' 将数组列在一个表中,分别进行插入排序。先以步长为一半,列表。而后对每一列进行排序。 而后将排好序的,再按照步长为一半,列表进行排序。 最后进行插入排序 ''' def shell_sort(lst): n = len(lst) gap = n//2 #按照总长度的一半进行分列,而后进行 行排序 while gap > 0: for i in range(gap,n): j = i #按照步长进行排序 while j>= gap and lst[j-gap] > lst[j]:#对索引位置进行有规律的使用 # j-gap表示每一列上的元素,j发生变化,列发生变化 lst[j-gap],lst[j] = lst[j],lst[j-gap] j -= gap#向上一行 gap = gap//2#缩小比较的列的个数 lst = [54,26,93,17,77,31,44,55,20] shell_sort(lst) print(lst)