希尔排序就是把记录按下标进行一定的增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键粗越来越多,当增量减到1时,整个文件恰好被分成一组,算法便终止
package test;
import java.util.Scanner;
public class sheersort {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int a[] = new int [10];
for(int i = 0;i < 10;i++) {
a[i] = sc.nextInt();
}
for(int n = a.length;n > 0;n = n / 2) {//10个数 共3次分组,分别分成:5组、2组、1组
for(int i = n;i < a.length;i++) {//第一次分组为例:有五组即进行五次循环
for(int j = i - n;j >= 0;j = j - n) {//进行插入排序
if(a[j] > a[j + n]) {//同组内进行比较
int temp = a[j];
a[j] = a[j + n];
a[j + n] = temp;
}
}
}
}
for(int i = 0;i < a.length;i++) {
System.out.print(a[i] + " ");
}
}
}