**fig7_8.txt** /* 1*/ template /* 2*/ void /* 3*/ Perc_Down( Etype A[ ], unsigned int i, const unsigned int N ) /* 4*/ { /* 5*/ unsigned int Child; /* 6*/ Etype Tmp = A[ i ]; /* 7*/ for( ; i * 2 <= N; i = Child ) /* 8*/ { /* 9*/ Child = i * 2; /*10*/ if( Child != N && A[ Child + 1 ] > A[ Child ] ) /*11*/ Child++; /*12*/ if( Tmp < A[ Child ] ) /*13*/ A[ i ] = A[ Child ]; /*14*/ else /*15*/ break; /*16*/ } /*17*/ A[ i ] = Tmp; /*18*/ } /* 1*/ template /* 2*/ void /* 3*/ Heap_Sort( Etype A[ ], const unsigned int N ) /* 4*/ { /* 5*/ for( unsigned int i = N / 2; i > 0; i-- ) // Build_Heap. /* 6*/ Perc_Down( A, i, N ); /* 7*/ for( i = N; i >= 2; i-- ) /* 8*/ { /* 9*/ Swap( A[ 1 ], A[ i ] ); // Delete_Max. /*10*/ Perc_Down( A, ( unsigned int ) 1, i - 1 ); /*11*/ } /*12*/ }