希尔排序python 简书_排序:希尔排序(算法)

文 | 莫若吻

(注:如果想更好的理解希尔排序,请先看看我的上一篇博客插入排序,希望会对你有帮助。)

一、简介

希尔排序(Shell Sort)是插入排序的一种算法,是对直接插入排序的一个优化,也称缩小增量排序。

希尔排序是非稳定排序算法。

希尔排序因DL.Shell于1959年提出而得名。

(注:为方便记忆算法,我习惯将其记作“三层for循环+if” ------** for(for(for(if)))**)

希尔排序是基于直接插入排序的以下两点性质而提出的改进方法:

1.插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率。

2.插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。

二、原理

希尔排序是将待排序的数组元素 按下标的一定增量分组 ,分成多个子序列,然后对各个子序列进行直接插入排序算法排序;然后依次缩减增量再进行排序,直到增量为1时,进行最后一次直接插入排序,排序结束。

**增量d 的范围: **1<= d < 待排序数组的长度 (d 需为 int 值)

**增量的取值: **一般的初次取序列(数组)的一半为增量,以后每次减半,直到增量为1。

第一个增量=数组的长度/2,

第二个增量= 第一个增量/2,

第三个增量=第二个增量/2,

以此类推,最后一个增量=1。

好的增量序列的共同特征:

① 最后一个增量必须为1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值