有人可以提供一个使用 Knuth 序列的 Java shellsort 的简单工作示例吗?我在互联网上查看了几个地方,但找不到适合我的解释。我在概念层面上理解 shellsort - 因为它是一种插入排序,它是在随着时间的推移缩小直到达到 1 的间隙的间隙上完成的 - 这本质上是一种插入排序。然而,Knuth 序列是 (k * 3 - 1)/2,前几个间隙的列表通常表示为 [1, 4, 13, 40, 121.. 等等]。
我的问题是这将如何实施?起始间隙实际上是 1,还是这个序列在它大于被排序列表的大小之前生成的值?如果差距从 1 开始,如果我正确理解 shell 排序,那么目的就会失败。有人可以对此有所了解吗?我觉得我错过了一些对理解这件事至关重要的东西。
提前致谢。