10.2.4 希尔排序

  希尔排序又称"缩小增量排序",它的基本思想是,先对待排序列进行"宏观调整",待序列中的记录"基本有序"时再进行直接插入排序。动画

  先看一个具体例子的希尔排序的过程。例如一个含11个关键字的序列 (16,25,12,30,47,11,23,36,9,18,31),先对它进行"增量为5"的插入排序,即分别使 为有序序列,然后将增量"缩小到3",排序结果使 分别成为有序序列,此时序列中在关键字18,23,25,31和47之前的关键字均比它们小,即在进行最后一趟排序时这几个关键字都不需要"往前进行"插入,之后经过最后一趟插入排序即得到有序序列。动画

  从上述例子的排序过程可见,由于希尔排序在前几趟的排序过程中,关键字较大的记录是"跳跃式"地往后移动,从而使得在进行最后一趟插入排序之前序列中记录的关键字已基本有序,只需作少量关键字比较和移动记录,由此减少了整个排序过程中所需进行的"比较"和"移动"的次数。
 
 
  所谓"基本有序"是指,在序列中的各个关键字之前,只存在少量关键字比它大的记录。