Cod sursa(job #1588788)

Utilizator DysKodeTurturica Razvan DysKode Data 3 februarie 2016 16:57:33
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>

using namespace std;

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

int n, v[100001];

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

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

    int p = ( l + ( r - l ) / 2 );
    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()
{
    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;
}