Cod sursa(job #1320235)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 17 ianuarie 2015 18:52:39
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
#define NMAX 5000010

using namespace std;

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

int a[NMAX], n;

int partitioneaza(int st, int dr)
{
    int p=st+1, u=dr;

    while (p<=u)
    {
        if (a[p]<=a[st]) ++p;
        if (a[u]>=a[st]) --u;
        if (a[p]>a[st] && a[u]<a[st] && p<u)
        {
            swap(a[p++], a[u--]);
        }
    }

    swap(a[st], a[p-1]);

    return p-1;
}

void quick(int st, int dr)
{
    if (st<dr)
    {
        int p=partitioneaza(st, dr);
        quick(st, p-1);
        quick(p+1, dr);
    }
}

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

    quick(1, n);

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

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