#include<stdio.h>
#include<stdlib.h>
void print(
int *a,
int length)
{
for (
int i =
1; i < length; i++)
printf(
"%d ",a[i]);
printf(
"\n");
}
void pro(
int *a,
int length,
int len)
{
for (
int i =
1+len; i <= length; i++)
{
if (a[i] < a[i - len])
{
a[
0] = a[i];
int j =
0;
for (j=i-len;a[j]>a[
0]&&j>
0;j-=len)
{
a[j + len] = a[j];
}
a[j+len] = a[
0];
}
}
}
void shell(
int *a,
int length,
int *dalte,
int len)
{
for (
int i =
0; i < len; i++)
pro(a,length,dalte[i]);
}
int main(
void)
{
int a[] = {
9999,
4,
5,
8,
9,
2,
3,
0,
6,
7,
45,
98,
415,
31,
8489,
66,
58};
int dalte[] = {
4,
2,
1};
print(a,
sizeof(a)/
sizeof(
int));
shell(a,
sizeof(a) /
sizeof(
int)-
1,dalte,
sizeof(dalte)/
sizeof(
int));
print(a,
sizeof(a) /
sizeof(
int));
return 0;
}