Python程序实现希尔排序

Python程序实现希尔排序

希尔排序,又称缩小增量排序,也是一种插入排序算法。希尔排序是将整个数据集分为若干个子集,进行插入排序的变体。

算法描述

首先,设定一个间隔序列 increment,并对数据集按照 increment 的大小进行分组,对每一组数据进行插入排序。随着 increment 逐渐变小,每组包含的元素越来越少,当 increment 为 1 时,整个数据集合并成了一个组,此时插入排序完成。

示例代码:

def shellSort(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^{\frac{3}{2}})

空间复杂度:O(1)

稳定性:不稳定

示例

  • 对数组 [64, 34, 25, 12, 22, 11, 90] 进行排序
arr = [64, 34, 25, 12, 22, 11, 90]
print("排序前:", arr)
sorted_arr = shellSort(arr)
print("排序后:", sorted_arr)

输出结果:

排序前: [64, 34, 25, 12, 22, 11, 90]
排序后: [11, 12, 22, 25, 34, 64, 90]

结论

希尔排序是一种优化后的插入排序算法,主要通过分组和插入排序实现。希尔排序的时间复杂度为 O(n^{\frac{3}{2}}),空间复杂度为 O(1),不稳定排序算法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程