关于shell排序算法

时间:2011-09-09 13:03:31

标签: algorithm sorting shellsort

我正在阅读算法。它在shell排序中提到如下

  

Shellsort的一个重要特性(我们没有证明)是   那个(h subscipt k)hk-sorted文件然后是(h subsciprt(k-1))   hk-1-sorted仍然是hk-sorted。如果不是这样的话,那就是   算法很可能没什么价值,因为早期的工作就完成了   阶段将在后期阶段撤消。

我的问题是作者在上述陈述中的含义是什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

Shell排序是一种多遍排序算法。它的工作原理是将数组的子集排序为特定的整数“stride”值k,即只访问数组中的每个kth元素。

最初使用较大的步幅值,在后续传递中,此步幅值减小,直到以1(通常只是标准插入排序阶段)和数组的步幅运行最后一次传递完全排序。

您所询问的陈述仅表示在先前的传球(较大的步幅值)上进行的任何排序都会被后来的传球(较小的步幅值)保留。如果不是这种情况,那么shell排序使用的多遍方法就没有意义了。

希望这有帮助。