#include <stdio.h>
#include <time.h>
#define MAX 2000000
#define MAX_TEST 10


/*Unser Array zum sortieren*/
int test_array[MAX];

void init_test_array()
{
 int i,j;
 for(i=MAX,j=0; i>=0; i--,j++)
   test_array[j]=i;
}


void shellsort(int array[], int elemente, int distanz)
{
 int i,j,temp,n;

 n=elemente;
 for(; n>0; n/=distanz)
   for(i=n+1; i<=elemente; i++)
     {
       temp=array[i];
       for(j=i; j>n && array[j-n]>temp; j-=n)
          array[j]=array[j-n];
       array[j]=temp;
     }
}


int main()
{
 int i;
 int distanz_folge;
 float zeit;
 clock_t start, ende;

 for(distanz_folge=2; distanz_folge <= MAX_TEST; distanz_folge++)
  {
    init_test_array();
    start = clock();
    shellsort(test_array, MAX-1, distanz_folge);
    ende = clock();
    /*Ergebniss der Laufzeitmessung in Sekunden*/
    zeit = (float)(ende-start) / (float)CLOCKS_PER_SEC;
    printf("Die Laufzeitmessung mit der Distanz-Folge %d ergab %.2f Sekunden\n",distanz_folge,zeit);
  }

 return 0;
}
