排序-希尔排序

希尔排序

基本知识

基本思想:

  • 说把下标相差k的分到一组,这个差值(距离)被称为增量
  • 先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序
  • 然后缩小增量为上个增量的一半,继续划分分组
  • 直到增量为1,对全体记录进行依次直接插入排序

操作方法:

  • 选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;
  • 按增量序列个数k,对序列进行k 趟排序;
  • 每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序
  • 仅增量因子为1时,整个序列作为一个表来处理,表长度即为整个序列的长度

希尔排序时效分析很难,关键码的比较次数与记录移动次数依赖于增量因子序列d的选取,特定情况下可以准确估算出关键码的比较次数和记录的移动次数。目前还没有人给出选取最好的增量因子序列的方法。增量因子序列可以有各种取法,有取奇数的,也有取质数的,但需要注意:增量因子中除1 外没有公因子,且最后一个增量因子必须为1。希尔排序方法是一个不稳定的排序方法。

原文地址:https://www.cnblogs.com/yanghanwen/p/12111469.html