大数据存储技术-----希尔排序

希尔排序(Shell Sort)是一种改进的插入排序算法。它将待排序的数组按照一定的间隔分组,然后对每组进行插入排序,逐渐缩小间隔直到间隔为1,最终对整个数组进行一次插入排序。希尔排序的时间复杂度取决于选取的间隔序列,通常是O(nlogn)。

希尔排序的基本步骤如下:

  1. 选择一个增量序列,通常是通过n/2不断缩小得到的。
  2. 对数组按照增量序列进行分组,对每组进行插入排序。
  3. 逐渐缩小增量序列,重复步骤2,直至增量为1。
  4. 对整个数组进行一次插入排序。

希尔排序的优点:是在初始阶段可以较快地将大的元素移动到合适的位置,从而减少后续的比较次数。

#希尔排序


#定义了一个名为 shell_sort 的函数
def shell_sort(nums):
    # 计算输入列表的长度 n
    n = len(nums)
    # 初始化增量 gap 为 n 的一半。
    gap = n // 2

    # 表示当增量 gap 大于0时,执行循环内的操作。
    while gap > 0:

        #是一个循环,遍历从增量 gap 到列表长度 n 的所有元素。
        for i in range(gap, n):
            # 用于暂存当前元素的值。
            temp = nums[i]
            # 初始化一个指针 j,用于在子列表中进行比较和插入操作。
            j = i
            # 是一个循环,用于在子列表中找到合适位置插入当前元素。

            while j >= gap and nums[j - gap] > temp:
                # 将元素往后移动,为当前元素腾出位置。
                nums[j] = nums[j - gap]
                # 更新指针位置,继续向前比较。
                j -= gap
            # 将当前元素插入到正确的位置。
            nums[j] = temp
        #缩小增量,逐步接近最终的插入排序。
        gap //= 2
    
    return nums



# 测试示例
# 定义了一个列表
nums = [50, 36, 72, 23, 14]
# 调用 shell_sort 函数对该列表进行排序,并将排序后的结果打印输出。
sorted_nums = shell_sort(nums)
print(sorted_nums)
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值