package com.chengmaoning.shellsort;
public class ShellSort {
public static int[] a = { 10, 32, 1, 9, 5, 7, 12, 0, 4, 3 };
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("排序前:");
for (int j = 0; j < a.length; j++) {
System.out.printf("%3s ", a[j]);
}
System.out.println();
// 希尔排序
shellSort(a);
System.out.println("排序后:");
for (int j = 0; j < a.length; j++) {
System.out.printf("%3s ", a[j]);
}
System.out.println();
}
public static void shellSort(int[] a) {
// TODO Auto-generated method stub
int i, j, temp;
int increment = a.length;
do {
increment = increment / 3 + 1; // 步长
for (i = increment; i < a.length; i++) {
if (a[i] < a[i - increment]) {
temp = a[i]; // 存入中间变量
// 插入排序,大家可以稿纸上画画,不要整迷糊了
for (j = i - increment; j >= 0 && temp < a[j]; j -= increment) {
a[j + increment] = a[j];
}
a[j + increment] = temp;
}
}
} while (increment > 1);
}
}