Cod sursa(job #966682)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 26 iunie 2013 14:04:19
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>

using namespace std;

int n;
int a[500005];

void qsort( int l, int r )
{
    int i = l, j = r, p = a[ l + rand()%(r - l + 1) ];

    do
    {
        while ( a[i] < p )
                i++;

        while ( a[j] > p )
                j--;

        if ( i <= j )
        {
            swap( a[i], a[j] );

            i++;
            j--;
        }

    }while( i < j );

    if( i < r )
        qsort( i, r );

    if( j > l )
        qsort( l, j );
}

int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");

    srand(time(NULL));

    f >> n;

    for ( int i = 1; i <= n; i++ )
            f >> a[i];

    qsort( 1, n );

    for ( int i = 1; i <= n; i++ )
        g << a[i] << " ";

    f.close();
    g.close();
}