Hill ソート アルゴリズムの基本的な考え方は次のとおりです。まず最初の増分として n より小さい整数 d1 を取得し、ファイル内のすべてのレコードを d1 グループに分割します。距離が dl の倍数であるすべてのレコードは、同じグループに配置されます。まず各グループ内で直接挿入ソートを実行し、次に 2 番目の増分 d2<d1 を取得し、増分 dt=1(dt<dt-l<…<d2<d1 ) になるまで、つまりすべての増分が得られるまで上記のグループ化とソートを繰り返します。直接挿入ソートの場合、レコードは同じグループに配置されます。この方法は本質的にはグループ化された挿入方法です。
//インクリメント付きソートの挿入 public static voidshellSort(int[] array) { int len = array.length; int h = 1; while (h < len) h = h * 3 + 1; 1) { for (int i = 1; i < len; i++) { for (int j = i; j >= h; j = j - h) { if (array[j] < array[j - h]) { Sort.swap(array, j, j - h);// j と jh を入れ替える } else Break;
ヒルソーティングの模式図
以上がこの記事の全内容です。皆さんが Java Hill ソートをマスターするのに役立つことを願っています。