誰かが、Knuth シーケンスを使用する Java のシェルソートの簡単な作業サンプルを提供できますか? 私はインターネット上のいくつかの場所を見ましたが、私にとってうまくいく説明を見つけることができません. 概念レベルでシェルソートを理解しています-これは、ギャップが1に達するまで時間の経過とともに縮小するギャップで行われる挿入ソートであるため、本質的に挿入ソートです。ただし、Knuth シーケンスは (k * 3 - 1)/2 であり、最初のいくつかのギャップのリストは通常 [1、4、13、40、121.. など] として表されます。
私の質問は、これをどのように実装するのですか? 開始ギャップは実際には 1 ですか、それともソートされるリストのサイズよりも大きい直前にこのシーケンスによって生成された値ですか? ギャップが 1 から始まった場合、シェル ソートを正しく理解していると、目的が達成できなくなります。誰かがこれに光を当てることができますか?このことを理解するための重要な何かを見逃しているように感じます。
前もって感謝します。