def shell_sort(arr): n = len(arr) gap = n // 2 while gap > 0: for i in range(gap, n): temp = arr[i] j = i while j >= gap and arr[j - gap] > temp: arr[j] = arr[j - gap] j -= gap arr[j] = temp gap //= 2 return arr if __name__ == '__main__': num = [1, 5, 3, 4, 5, 3, 1, 2, 6, 4] print(shell_sort(num))
希尔排序原理:
先将整个待排元素序列分割成若干个子序列分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序时,再对全体元素进行一次直接插入排序。