HR Quicksort 2 - Sorting ( Easy )
https://www.hackerrank.com/challenges/quicksort2
第一次寫 quickSort,只是想記錄一下。
void quickSort( int ql, int qr, vi &A ){ if( ql == qr ) return; int pivot = A[ ql ]; queue< int > small, large; for( int i = ql + 1; i <= qr; ++i ){ if( A[ i ] < pivot ) small.push( A[ i ] ); else large.push( A[ i ] ); } int pivot_pos = ql + small.size(); for( int i = ql; i <= qr; ++i ){ if( i == pivot_pos ) A[ i ] = pivot; else if( !small.empty() ) A[ i ] = small.front(), small.pop(); else A[ i ] = large.front(), large.pop(); } if( pivot_pos - 1 >= ql ) quickSort( ql, pivot_pos - 1, A ); if( pivot_pos + 1 <= qr ) quickSort( pivot_pos + 1, qr, A ); for( int i = ql; i <= qr; ++i ) cout << A[ i ] << ( i == qr ? '\n' : ' ' ); }