Variações do algoritmo de ordenação shell em Java
Existe uma maneira de calcular o ponto de partida de um loop for e os ajustes a ele. O loop original tem essas condições
for( int gap = a.length / 2; gap > 0; gap /= 2 )
Eu ajustei para definir as condições do Shell Sort do Hibbard e consegui
for( int gap = (int) Math.pow(2, a.length); gap > 0; gap /= 2 )
Ele funciona um pouco melhor e pode até estar certo, mas eu quero trabalhar com os tipos de shell mais avançados a partir daqui.
http://en.wikipedia.org/wiki/Shellsort#Gap_sequences
Como eu poderia transformar (3 ^ k - 1) / 2 não maior que o teto de n / 3 em uma condição de loop?