希尔排序python

希尔排序也是一种插入排序,是简单插入排序经过改进之后一种更为高效的排序方法,也称为缩小增量排序。该算法是冲破O(n的平方n^2)的第一批算法之一。
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。

def shellSort(nums):
    # 设定步长
    step = int(len(nums)/2)
    while step > 0:
        for i in range(step, len(nums)):#实现每个小分组进行了插入排序
            # 类似插入排序, 当前值与指定步长之前的值比较, 符合条件则交换位置
            while i >= step and nums[i-step] > nums[i]:
                nums[i], nums[i-step] = nums[i-step], nums[i]
                i -= step
        step = int(step/2)
    return nums


if __name__ == '__main__':
    nums = [9,8,7,6,5,4,3,2,1,0]
print (shellSort(nums))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值