#include <stdio.h>
#define MAXSIZE 20
typedef struct
{
int r[MAXSIZE+1];
int length;
}SqList;
int main ()
{
SqList L;
int i, j, increasement;
scanf("%d", &(L.length));
for(i = 1; i < L.length; i++)
{
scanf("%d", &(L.r[i]));
}
increasement = L.length;
do
{
increasement = increasement/3 + 1;
for(i = increasement + 1; i < L.length; i++)
{
if(L.r[i] < L.r[i-increasement])
{
L.r[0] = L.r[i];
for(j = i-increasement; j>0 && L.r[j] > L.r[0]; j -= increasement)
{
L.r[j+increasement] = L.r[j];
}
L.r[j+increasement] = L.r[0];
}
}
}while(increasement > 1);
for(i = 1; i < L.length; i++)
{
printf("%d\n", L.r[i]);
}
return 0;
}
希尔排序
最新推荐文章于 2018-04-13 14:40:07 发布