Cod sursa(job #379160)

Utilizator popoiu.georgeGeorge Popoiu popoiu.george Data 30 decembrie 2009 20:32:17
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
//#include<fstream>
#include<stdio.h>
#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;
scanf("%d",&N);
for(int i=1;i<=N;i++)//f>>v[i];
    scanf("%d",&v[i]);
}

int Partition(int a[],int p,int q)
{
int pivot;
int i,j;
int aux;
i=p;
pivot=a[p+rand()%(p-q+1)];
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]<<" ";
    printf("%d ",v[i]);
}

int main()
{
freopen(inf,"r",stdin);
freopen(outf,"w",stdout);
Citire();
QuickSort(v,1,N);
Afisare();
//f.close();
//g.close();
return 0;
}