排序之希尔排序

排序之希尔排序

假设将数从小到大排序

希尔排序是对插入排序的改进,将未排序数按照相隔某个增量分成若干个子序列,在每个子序列中进行插入排序,一次排序后减小增量,重复以上操作,直到增量减小为一,再进行一次插入排序,则排序完成。

由于分组时的间隔存在,所以排序时两个间隔较远的数可以用一次交换就实现,用更少的交换操作就实现了排序,所以在处理更大的数据时,希尔排序与插入排序相比优势明显.

代码实现:

def shellSort(l):
    gap = len(l) // 2
    while gap >= 1:
        i = 0
        for i in range(len(l)):
            while i + gap < len(l):
                if l[i] >= l[i + gap]:
                    l[i], l[i + gap] = l[i + gap], l[i]
                i += 1
        gap //= 2
    return l

本文为自己学习时所写的小笔记,水平有限,内容仅供参考,如有错误,欢迎指正

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值