/* ECP: FILEname=fig9_13.c */ /* 1*/ /* Shellsort An Array Of Blocks. */ /* 2*/ /* Very Slow Because Of Block Copies. */ /* 3*/ void /* 4*/ Shellsort( Block A[ ], const unsigned int N ) /* 5*/ { /* 6*/ unsigned int Gap; /* 7*/ Block Tmp; /* 8*/ unsigned int i, j; /* Loop Counters */ /* 9*/ for( Gap = N/2; Gap > 0; Gap = Gap == 2 ? 1 : Gap / 2.2 ) /*10*/ for( i = Gap; i < N; i++ ) /*11*/ { /*12*/ Tmp = A[ i ]; /*13*/ for( j = i; j >= Gap && /*14*/ Tmp.Key < A[ j - Gap ].Key; j -= Gap ) /*15*/ A[ j ] = A[ j - Gap ]; /*16*/ A[ j ] = Tmp; /*17*/ } /*18*/ }