[アルゴリズム]ヒルアルゴリズム


ヒルアルゴリズムは挿入順序と泡の延長であり、配列分割grap=length/2をステップサイズ2で小塊に分けて並べ替えてから、grap/2を続けて上述の並べ替えを行い、grap=1で並べ替えを完了するまで、配列をほぼ秩序化させ、並べ替え回数を減少させ、複雑度を低減させる.
 for (int gap = array.length / 2; gap > 0; gap /= 2) {
            //  gap   ,                 
            for (int i = gap; i < array.length; i++) {
                int j = i;
                int temp;
                while (j - gap >= 0 && array[j] < array[j - gap]) {
                    temp = array[j];
                    array[j] = array[j - gap];
                    array[j - gap] = temp;
                    j -= gap;
                }
            }
        }