/* ECP: FILEname=fig8_34.c */ /* 1*/ /* Shellsort An Array Of Strings */ /* 2*/ /* Do Not Move Strings, But Just Pointers */ /* 3*/ void /* 4*/ Shellsort( const char *A[ ], const unsigned int N ) /* 5*/ { /* 6*/ unsigned int Gap; /* 7*/ const char *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*/ strcmp( Tmp, A[ j - Gap ] ) < 0; j -= Gap ) /*15*/ A[ j ] = A[ j - Gap ]; /*16*/ A[ j ] = Tmp; /*17*/ } /*18*/ }