// QUICKSORT void swap ( int* ia, int i, int j ) { // swap two elements of an array int tmp = ia[ i ]; ia[ i ] = ia[ j ]; ia[ j ] = tmp; } void qsort( int* ia, int low, int high ) { // quick sort // stopping condition for recursion if ( low < high ) { int lo = low; int hi = high + 1; int elem = ia[ low ]; for (;;) { while ( ia[ ++lo ] < elem ) ; while ( ia[ --hi ] > elem ) ; if ( lo < hi ) swap( ia, lo, hi ); else break; } // end, for(;;) swap( ia, low, hi ); // Recursive calls: qsort( ia, low, hi - 1 ); qsort( ia, hi + 1, high ); } // end, if ( low < high ) }