Cod sursa(job #1589258)

Utilizator DysKodeTurturica Razvan DysKode Data 3 februarie 2016 21:18:18
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <ctime>
#include <stdlib.h>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

unsigned int n, v[500001];

void svap( unsigned int &a, unsigned int &b )
{
    int x = a;
    a = b;
    b = x;
return;
}

void quicksort( int l, int r )
{
    if( l >= r )
        return;

    int p = rand()%(r-l) + l;
    int z = v[ p ];
    int k = r;

    for( int i = l ; i <= k ; i++ )
    {
        if( v[ i ] > z )
        {
            if( k == p )
                p = i;

            svap( v[ i ] , v[ k-- ] );


            i--;
        }
    }

    if( v[ k ] <= v[ p ] )
        svap( v[ k ] , v[ p ] );
    quicksort( l , k - 1 );
    quicksort( k + 1 , r );
}

int main()
{
    srand( time(0) );
    fin>>n;

    for( int i = 1; i <= n ; i++ )
    {
        fin>>v[ i ];
    }

    quicksort( 1 , n );

    for( int i = 1 ; i <= n ; i++ )
    {
        fout<<v[ i ]<<' ';
    }
    return 0;
}