#include <iostream>
using namespace std;
void print(int *p , int len)
{
for (int i = 0; i < len; ++i)
{
cout << p[i] << ' ';
}
cout << endl;
}
void swap(int &a , int &b)
{
int temp = a;
a = b;
b = temp;
}
void sort(int *p , int len)
{
int i,j,temp;
int gap = len;
while(gap > 1)
{
gap = gap/3+1;
for(i = gap ;i < len ; i++)
{
temp = p[i];
for(j = i-gap;j >= 0;j-=gap)
{
if (temp > p[j])
{
p[j+gap] = p[j];
}
else
break;
}
p[j+gap] = temp;
}
}
}
int main()
{
int a[] = {2,35,76,23,876,74,12,7,22,65,234,66,987,234,654,345,987,65,54};
int len = sizeof(a)/sizeof(a[0]);
print(a,len);
sort(a,len);
print(a,len);
return 0;
}