有没有办法计算 for 循环的起点及其调整。原始循环有这些条件
for( int gap = a.length / 2; gap > 0; gap /= 2 )
我对其进行了调整以设置 Hibbard's Shell Sort 的条件并得到了这个
for( int gap = (int) Math.pow(2, a.length); gap > 0; gap /= 2 )
它工作得稍微好一点,甚至可能是正确的,但我想从这里开始使用更高级的 shell 类型。
http://en.wikipedia.org/wiki/Shellsort#Gap_sequences
如何将 (3^k - 1)/2 不大于 n/3 的上限转换为 for 循环条件?