Advertisement
yuawn

algo2017_week11_quick_sort

Dec 17th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define pb push_back
  4. #define ALL(o) (o).begin(),(o).end()
  5. #define fo(n) for(int i=0;i<n;i++)
  6. #define fos(o,n) for(int i=o;i<=n;i++)
  7.  
  8. vector<int> p;
  9.  
  10. void print(){
  11.     fo( p.size() - 1 ) cout << p[i] << ' ';
  12.     cout << p[ p.size() - 1 ] << endl;
  13. }
  14.  
  15. void quicksort( int L , int R ){
  16.     int mid = ( L + R ) / 2 , l = L , r = R;
  17.     if( L == R ) return;
  18.    
  19.    
  20.     while( r > l ){
  21.  
  22.         while( p[l] <= p[R] && l < R ) ++l;
  23.         while( p[r] >= p[R] && r > L ) --r;
  24.        
  25.         if( r > l ) {
  26.             swap( p[l] , p[r] );
  27.             ++l , --r;
  28.             print();
  29.         }
  30.     }
  31.    
  32.     while( p[l] <= p[R] && l < R ) ++l;
  33.    
  34.     if( l != R ){
  35.         swap( p[l] , p[R] );
  36.         print();
  37.     }
  38.    
  39.     if( l - 1 > L ) quicksort( L , l - 1 );
  40.     if( R > l )     quicksort( l , R );
  41. }
  42.  
  43.  
  44. int main(){
  45.    
  46.     stringstream ss;
  47.     string s;
  48.    
  49.     getline( cin , s );
  50.    
  51.     ss << s;
  52.    
  53.     int num;
  54.    
  55.     while( ss >> num ) p.pb( num );
  56.    
  57.     print();
  58.    
  59.     quicksort( 0 , p.size() - 1 );
  60.  
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement