我正在阅读算法。它在shell排序中提到如下
Shellsort的一个重要特性(我们没有证明)是 那个(h subscipt k)hk-sorted文件然后是(h subsciprt(k-1)) hk-1-sorted仍然是hk-sorted。如果不是这样的话,那就是 算法很可能没什么价值,因为早期的工作就完成了 阶段将在后期阶段撤消。
我的问题是作者在上述陈述中的含义是什么?
谢谢!
答案 0 :(得分:3)
Shell排序是一种多遍排序算法。它的工作原理是将数组的子集排序为特定的整数“stride”值k
,即只访问数组中的每个kth
元素。
最初使用较大的步幅值,在后续传递中,此步幅值减小,直到以1
(通常只是标准插入排序阶段)和数组的步幅运行最后一次传递完全排序。
您所询问的陈述仅表示在先前的传球(较大的步幅值)上进行的任何排序都会被后来的传球(较小的步幅值)保留。如果不是这种情况,那么shell排序使用的多遍方法就没有意义了。
希望这有帮助。