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?