数据结构之希尔排序(插入排序)
希尔排序(Shell`s Sort)又称“缩小增量排序”(Diminishing Increment Sort),是插入排序的一种,因D.L.Shell于1959年提出而得名。
希尔排序的诞生是由于插入排序在处理大规模数组的时候会遇到需要移动太多元素的问题。希尔排序的思想是将一个大的数组“分而治之”,划分为若干个小的数组,然后分别对划分出来的数组进行插入排序。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
- 插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率
- 但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位
效果示意图:
步骤
- 取增量,一般取数组长度/2
- 按增量取得一个子数列,对子数列按插入排序的方式处理
- 将增量递减,重复1,2步骤
- 直至增量为为0,数列已经排好序
实例
原始数据