Variationen von Shell-Sortieralgorithmen in Java

Gibt es eine Möglichkeit, den Startpunkt einer for-Schleife und die Anpassungen daran zu berechnen? Die ursprüngliche Schleife hat diese Bedingungen

for( int gap = a.length / 2; gap > 0; gap /= 2 )

Ich habe es angepasst, um die Bedingungen für die Hibbard-Shell-Sortierung festzulegen, und habe dies erhalten

for( int gap = (int) Math.pow(2, a.length); gap > 0; gap /= 2 )

Es funktioniert etwas besser und könnte sogar richtig sein, aber ich möchte von hier aus mit den fortgeschritteneren Shell-Sortierungen arbeiten.

http://en.wikipedia.org/wiki/Shellsort#Gap_sequences

Wie könnte ich (3 ^ k - 1) / 2, das nicht größer als die Obergrenze von n / 3 ist, in eine for-Schleifenbedingung umwandeln?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage