Partitioning In Place

int partition( vector<int> & data, int start, int end, int pivot_position )
{
  int x = data[pivot_position];
  int i = start - 1;
  int j = end + 1;
  
  while( true )
  {
    do j--;
    while( data[j] > x );
    
    do i++;
    while( data[i] < x );
    
    if( i < j )
      swap( data, i, j );    
    else
      return j;
  }
}


next up previous
Next: Explanation Up: DIVIDE-AND-CONQUER SORTING Previous: Quicksort