Saturday, 16 July 2011

Quick Sort.


void quicksort ( int a[ ], int lower, int upper )
{
 int i ;
 if ( upper > lower )
 {
  i = split ( a, lower, upper ) ;
  quicksort ( a, lower, i - 1 ) ;
  quicksort ( a, i + 1, upper ) ;
 }
}
int split ( int a[ ], int lower, int upper )
{
 int i, p, q, t ;
 p = lower + 1 ;
 q = upper ;
 i = a[lower] ;
 while ( q >= p )
 {
  while ( a[p] < i )
   p++ ;
  while ( a[q] > i )
   q-- ;
  if ( q > p )
  {
   t = a[p] ;
   a[p] = a[q] ;
   a[q] = t ;
  }
 }
 t = a[lower] ;
 a[lower] = a[q] ;
 a[q] = t ;
 return q ;
}

No comments:

Post a Comment