Cod sursa(job #379158)

Utilizator popoiu.georgeGeorge Popoiu popoiu.george Data 30 decembrie 2009 20:25:03
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
#define inf "algsort.in"
#define outf "algsort.out"
#define NMax 500001
using namespace std;

fstream f(inf,ios::in),g(outf,ios::out);

int v[NMax];
int N;

void Citire()
{
f>>N;
for(int i=1;i<=N;i++)f>>v[i];
}

int Partition(int a[],int p,int q)
{
int pivot;
int i,j;
int aux;
i=p;
pivot=a[p];
for(j=p+1;j<=q;j++)
    {
    if(a[j]<=pivot)
        {
        i++;
        aux=a[i];
        a[i]=a[j];
        a[j]=aux;
        }
    }
aux=a[p];
a[p]=a[i];
a[i]=aux;
return i;
}

void QuickSort(int a[],int p,int q)
{
int r;
if(p<q)
    {
    r=Partition(a,p,q);
    QuickSort(a,p,r-1);
    QuickSort(a,r+1,q);
    }
}

void Afisare()
{
for(int i=1;i<=N;i++)g<<v[i]<<" ";
}

int main()
{
Citire();
QuickSort(v,1,N);
Afisare();
f.close();
g.close();
return 0;
}