python排序算法可视化 代码_Python初级排序算法——希尔排序(三)

8458e73cb10a3a59564051992abfc818.png

希尔排序是一种基于插入排序的快速的排序算法,对于大规模乱序数组插入排序很慢,因为它只会交换相邻的元素,因此元素只能一点一点地从数组的一端移动到另一端。希尔排序的思想是使数组中任意间隔为

的元素都是有序的。这样的数组被称为
有序数组。

8ed117f79f898ce8273ac4fc910f01c5.png
间隔h=4的h有序数组

在进行排序时,如果

很大,我们就能将元素移动到很远的地方,为实现更小的
有序创造方便。

08885724cb1145b901bef3f4670ee71f.gif
希尔排序示意图:先后用间隔13、4、1分别使用插入排序

实现希尔排序的一种方法是,将间隔为

的元素使用插入排序,形成
有序数组,不停减小间隔,直到
。这样,希尔排序的实现就转化为了一个类似于插入排序但使用不同增量的过程。如图所示,根据数组的长度选择
分别为13、4、1,间隔为h的两个元素相比较,绿色和红色的元素互换位置,黑色元素位置不变。

Python代码如下:

import 

希尔排序比插入排序和选择排序要快得多,并且数组越大,优势越大。

欧德飞:Python初级排序算法——选择排序(一)​zhuanlan.zhihu.com
e64620a16b062d5e91ff37317360e867.png
欧德飞:Python初级排序算法——插入排序(二)​zhuanlan.zhihu.com
e64620a16b062d5e91ff37317360e867.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值