1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
public class ShellSort implements Sort { public static void main(String[] args) { int[] numbers = {34, 12, 23, 56, 56, 56, 78}; ShellSort shellSort = new ShellSort(); System.out.println("ShellSort"); shellSort.sort(numbers); shellSort.print(numbers);
}
@Override public void sort(int[] arr) { int dk = arr.length / 2; while (dk >= 1) { ShellInsertSort(arr, dk); dk = dk / 2; } }
private void ShellInsertSort(int[] a, int dk) { for (int i = dk; i < a.length; i++) { if (a[i] < a[i - dk]) { int j; int x = a[i]; a[i] = a[i - dk]; for (j = i - dk; j >= 0 && x < a[j]; j = j - dk) { a[j + dk] = a[j]; } a[j + dk] = x; } } }
}
|