/* ECP: FILEname=fig14_6.cpp */ /* 1*/ template /* 2*/ void /* 3*/ Shellsort( Etype A[ ], const unsigned int N ) /* 4*/ { /* 5*/ unsigned int Gap; /* 6*/ Etype Tmp; /* 7*/ unsigned int i, j; // Loop counters. /* 8*/ for( Gap = N/2; Gap > 0; /* 9*/ Gap = Gap == 2 ? 1 : ( unsigned int ) ( Gap / 2.2 ) ) /*10*/ for( i = Gap; i < N; i++ ) /*11*/ { /*12*/ Tmp = A[ i ]; /*13*/ for( j = i; j >= Gap && Tmp < A[ j - Gap ]; j -= Gap ) /*14*/ A[ j ] = A[ j - Gap ]; /*15*/ A[ j ] = Tmp; /*16*/ } /*17*/ }