05 希尔排序
''' 希尔排序: 将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列来进行。 最后整个列表就只有一列了。 ''' import time start1 = time.time() def shell_sort(alist): n = len(alist) # 初始步长 gap = n//2 while gap >0: # 按步长进行插入排序 for i in range(gap,n): j= i # 插入步长 while j>=gap and alist[j-gap] > alist[j]: alist[j-gap], alist[j] = alist[j], alist[j-gap] j -= gap # 得到新的步长 gap //= 2 if __name__ == "__main__": alist = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] shell_sort(alist) print(alist) end1 = time.time() print(end1-start1)