我有一个问题。我对希尔排序和插入排序算法非常困惑。我们应该如何区分它们?
我有一个问题。我对希尔排序和插入排序算法非常困惑。我们应该如何区分它们?
希尔排序是插入排序的一般化版本。两种算法的基本原理相同。您有一个长度为n的排序序列,将未排序的元素插入其中,就可以得到一个长度为n+1的排序序列。
区别在于:插入排序仅使用一个序列(最初是数组的第一个元素)并扩展它(使用下一个元素)。
然而,希尔排序具有递减增量,这意味着比较的元素之间存在间隔(最初为n/2)。因此,需要使用插入排序对n/2个序列进行排序。每一步中,增量都会缩小(通常只需除以2.2),序列数也会减少。在最后一步中,没有间隔,算法退化为简单的插入排序。
由于递减增量,大型和小型元素被快速移动以纠正数组的一部分,然后在最后一步使用插入排序快速排序。这导致时间复杂度降低为O(n^(4/3))。