#include <iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
void ShellSort(int a[],int n)
{
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;
}
}
int main()
{
int a[10];
srand((unsigned)time(0));
int i;
for(i=0;i<10;i++)
a[i]=rand()%100+1;
cout<<"排序之前:"<<endl;
for(i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
ShellSort(a,10);
cout<<"排序之后:"<<endl;
for(i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}