![731471eceaa91be0856b707299627c68.png](https://i-blog.csdnimg.cn/blog_migrate/775feffe389195e59e8596f04ea1e66c.png)
希尔排序思想:
1959年Shell发明,第一个突破
由来:
- 插入排序什么时候使用高效:小规模数据 或者 数据基本有序 时十分高效。
- 基本有序 或 规模较小都不常见,希尔排序实现了这两个条件。
算法描述:
- 取间隔为序列长度的一半,
- 利用插入排序方法对间隔为
的序列进行排序,这里的步长就是
了,不是
- 取
为
的一半,
,重复上一步操作,直至
下面是上一节中插入排序的代码:用注释说明怎么用到算法描述的第二步中
def
图解原理步骤:
![bc03138c6670a66d6277081d0013992c.png](https://i-blog.csdnimg.cn/blog_migrate/bcbc236a4019e5b4cae03c7ea0fd2dac.jpeg)
参考:
- https://blog.csdn.net/qq_39207948/article/details/80006224
- https://www.cnblogs.com/chengxiao/p/6104371.html
python代码实现:
def
- 时间复杂度:
- 空间复杂度:
- 不稳定排序:跳跃性排序破坏了插入排序的稳定性
ps:排序算法稳定性的判定
- 稳定:如果
原本在
前面,而
,排序之后
仍然在
的前面。
- 不稳定:如果
原本在
的前面,而
,排序之后
可能会出现在
的后面。