Cod sursa(job #336645)

Utilizator DastasIonescu Vlad Dastas Data 31 iulie 2009 23:25:53
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>

using namespace std;

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

int Partitie(int A[], int st, int dr)
{
    int V = A[st];
    while ( st < dr )
    {
        while ( A[dr] >= V && st < dr )
            --dr;
        while ( A[st] < V && st < dr )
            ++st;

        if ( st < dr )
        {
            int tmp = A[st];
            A[st] = A[dr];
            A[dr] = tmp;
        }
    }

    return dr;
}

void Quicksort(int A[], int st, int dr)
{
    if ( st < dr )
    {
        int P = Partitie(A, st, dr);
        Quicksort(A, st, P);
        Quicksort(A, P + 1, dr);
    }
}

int A[500001];
int main()
{
    int n;

    in >> n;
    for ( int i = 1; i <= n; ++i )
        in >> A[i];
    Quicksort(A, 1, n);

    for ( int i = 1; i <= n; ++i )
        out << A[i] << " ";

    return 0;
}