希尔排序
核心思想 1、将序列按固定步长分组,组内进行插入排序 2、缩小步长,重复步骤一,直到步长小于等于1 def shell_sort(lst): n = len(lst) gap = n // 2 while gap >= 1: for i in range(gap, n): for j in range(i, 0, -gap): if lst[j] < lst[j - gap]: lst[j], lst[j - gap] = lst[j - gap], lst[j] else: break gap = gap // 2 时间复杂度: 最优:$O(n)$ 最坏:$O(n^2)$ 平均:$O(n^{1.3})$ 空间复杂度: $O(1)$ 稳定性: 不稳定