#include <stdlib.h>
#include <iostream>
using std::cout;
using std::endl;
#define N 10
#define M 100
#define SWAP(x,y) {int tmp=x; x=y; y=tmp;}
void print(int *a)
{
for(int i=0; i<N; ++i)
{
printf("%3d", a[i]);
}
printf("\n");
}
void shellSort(int *a)
{
for(int gap = N/2; gap > 0; gap /= 2)
{
for(int i=gap; i<N; ++i)
{
int insertVal = a[i];
int j;
for(j=i-gap; j>=0 && a[j]>insertVal; j-=gap)
{
a[j+gap] = a[j];
}
a[j+gap] = insertVal;
}
}
}
int main()
{
srand(time(NULL));
int *a = (int*)malloc(sizeof(int)*N);
for(int i=0; i<N; ++i)
{
a[i] = rand() % M;
}
print(a);
shellSort(a);
print(a);
free(a);
return 0;
}