public class Main
{
public static void ShellSort(int[]a)
{
int n=a.length;
int gap;
gap=n/2;
//a[0],a[1],a[2],...,a[n-2],a[n-1]
//a[0],a[a+gap],a[gap+gap]...
//a[1],a[1+gap],a[1+2gap]...
int i,j;
int data;
while(gap>0)
{
//a[0],a[gap] ,a[2gap], ...
for(i=gap;i<n;i++)
{
data=a[i];
for(j=i-gap;j>=0;j=j-gap)
{
if(a[j]>data)
a[j+gap]=a[j];
else
break;
}
a[j+gap]=data;
}
gap=gap/2;
}
}
public static void main(String[] args) {
int[] a=new int[10];
int i;
for(i=0;i<a.length;i++)
a[i]=(int)(Math.random()*100)+1;
System.out.println("排序之前:");
for(int data:a)
System.out.print(data+" ");
System.out.println();
Main.ShellSort(a);
System.out.println("排序之后:");
for(int data:a)
System.out.print(data+" ");
}
}