希尔排序
希尔排序是一个叫希尔的数学家提出的一种优化版本的插入排序。
- 首先取一个整数d1=n//2,将元素分为d1个组,每组相邻元素之间的距离为d1,在各组内进行直接插入排序。
- 取第二个整数d2=d1//2,重复上述分组排序过程,直到di=1,即所有元素在同一组内进行直接插入排序。
- 希尔排序是使整体数据越来越接近有序;最后一趟排序使得所有数据有序。
实现
# 希尔排序 def shell_sort(li): n = len(li) gap = n // 2 while gap > 0: for i in range(gap, n): temp =