Cod sursa(job #2800983)

Utilizator KarinaDKarina Dumitrescu KarinaD Data 14 noiembrie 2021 17:09:16
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
 
using namespace std;
 
const int N = 500001;
int v [ N ];
 
void quicksort( int v[], int n ) {
    
    if ( n <= 1 )
        return;
    
    int a = v [ rand() % n ];
  
    int st = 0, mij = 0, dr = 0, aux;
    
    while ( st + mij + dr != n ) {
      
        int x = st + mij;
        
        if ( a > v [ x ] ){
            
            aux = v [ x ];
            v [ x ] = v [ st ];
            v [ st ] = aux;
            
            st++;
        }
        
        else if ( a < v [ x ] ) {
            
            aux = v [ x ];
            v [ x ] = v [ n - dr - 1 ];
            v [ n - dr - 1 ] = aux;
            
            dr++;
        }
        
        else {
            mij++;
        }
        
    }

    quicksort( v, st );
    quicksort( v + st + mij, dr );
}
 
 
int main() {
    
    ifstream fin ( "algsort.in" );
    ofstream fout ( "algsort.out" );
    
    int n, i;
    
    fin >> n;
    
    for ( i = 0; i < n; i++ )
        fin >> v [ i ];
    
    quicksort( v, n );
    
    for ( i = 0; i < n; i++ )
        cout << v [ i ] << " ";
    
    return 0;
}