void
QuickSort( int *List, int Begin, int End )
{
int Value, Tmp, i, j;
if( End > Begin )
{
/* Divide the list in two */
Value = List[End];
i = Begin - 1;
j = End;
do {
while( List[++i] < Value );
while( List[--j] > Value );
Tmp = List[i];
List[i] = List[j];
List[j] = Tmp;
} while( j > i );
List[j] = List [i];
List[i] = List[End];
List[End] = Tmp;
/* Sort the first part */
QuickSort( List, Begin, i - 1 );
/* Sort the last part */
QuickSort( List, i + 1, End );
}
}