private static void Sort(Comparable[] arr) { int N = arr.length; int h = 1; while (h < N / 3) h = 3 * h + 1; while (h >= 1) { for (int i = h; i < N; i++) { for (int j = i; j >= h && SortUtil.less(arr[j], arr[j - h]); j -= h) { SortUtil.exch(arr, j, j - h); } } h = h / 3; } }