void swap( int *a, int *b ) { int tmp = *b; *b = *a; *a = tmp; } int partition( int *array, int last_ix ) { int pivot = array[ last_ix ]; int i = -1; for ( int j = 0; j < last_ix; ++ j ) { if ( array[ j ] <= pivot ) { ++ i; swap( array + i, array + j ); } } ++ i; swap( array + i, array + last_ix ); return i; } void sort( int *array, int size ) { if ( size < 2 ) return; int pix = partition( array, size - 1 ); sort( array, pix ); sort( array + pix + 1, size - pix - 1 ); }