#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10
typedef struct
{
int *data;
int length;
}Sqlist;
void ShellSort(Sqlist *l)
{
int i,j,d,t,m;
d=l->length;
do
{
d=d/3+1;
for(i=d;i<l->length;i++)
{
if(l->data[i]<l->data[i-d])
{
t=l->data[i];
for(j=i-d;j>=0&&l->data[j]>t;j-=d)
l->data[j+d]=l->data[j];
l->data[j+d]=t;
for(m=0;m<l->length;m++)
printf("%-6d",l->data[m]);
printf("\n");
}
}
}while(d>1);
}
void main()
{
Sqlist *l=NULL;
l=(Sqlist *)malloc(sizeof(Sqlist));
l->length=N;
l->data=(int *)malloc(N*sizeof(int));
srand((unsigned)time(NULL));
int i;
for(i=0;i<N;i++)
{
l->data[i]=rand()%100;
printf("%-6d",l->data[i]);
}
printf("\n希尔排序:\n");
ShellSort(l);
for(i=0;i<l->length;i++)
printf("%-6d",l->data[i]);
}