Cod sursa(job #1766304)

Utilizator PletoPletosu Cosmin-Andrei Pleto Data 27 septembrie 2016 20:21:53
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>

using namespace std;

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

int N, A[500000];

int divide(int p, int q)
{
    int st=p, dr=q, x=A[p];
    while(st<dr)
    {
        while(st<dr and A[dr]>=x)
        {
            dr--;
        }
        A[st]=A[dr];
        while(st<dr and A[st]<=x)
        {
            st++;
        }
        A[dr]=A[st];
    }
    A[st]=x;
    return st;
}

void quickSort(int p, int q)
{
    int m=divide(p,q);
    if(m-1>p)
    {
        quickSort(p, m-1);
    }
    if(m+1<q)
    {
        quickSort(m+1, q);
    }
}

int main()
{
    in>>N;
    for(int i=0; i<N; ++i)
    {
        in>>A[i];
    }
    quickSort(0, N-1);
    for(int i=0; i<N; ++i)
    {
        out<<A[i]<<" ";
    }
    in.close();
    out.close();
    return 0;
}