Python 算法教程(4):希尔排序详解

前言

希尔排序是插入排序的优化版本,通过分组插入突破 O(n²)。

一、算法原理

分组插入:选择增量序列,按增量分组,对每组插入排序,缩小增量重复。

二、代码实现

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

三、复杂度

最好 O(n log n),平均 O(n log² n),最坏 O(n²)

总结

希尔排序通过分组插入减少数据移动。

下一篇:归并排序

发表回复

后才能评论