void quicksort( vector<int> & data, int start, int end, RandGen & rand )
{
if( start < end )
{
int boundary = partition( data, start, end,
rand.RandInt( start, end ) );
quicksort( data, start, boundary, rand );
quicksort( data, boundary + 1, end, rand );
}
}
void quicksort( vector<int> & data )
{
RandGen rand;
quicksort( data, 0, data.size() - 1, rand );
}