Cod sursa(job #1580129)

Utilizator ArkinyStoica Alex Arkiny Data 25 ianuarie 2016 16:44:26
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int v[500010],N;

#define swap(x,y,t) (t=x,x=y,y=t)
int pivot,i,j,t;
void Qsort(int l,int r)
{
    if(l<r)
    {
         i=l,j=r;
        pivot=v[l + rand()%(r-l+1)];
        while(i<=j)
        {
            while(v[i]<pivot)
                ++i;
            while(v[j]>pivot)
                --j;
            if(i<=j)
                swap(v[i],v[j],t),++i,--j;
        }
        Qsort(l,j);
        Qsort(i,r);
    }
}

FILE *in,*out;

int main()
{
    int i;
    in=freopen("algsort.in","r",stdin);
    out=freopen("algsort.out","w",stdout);

    scanf("%d",&N);

    for(i=1;i<=N;++i)
        scanf("%d",&v[i]);

    srand(time(NULL));

    Qsort(1,N);

    for(i=1;i<=N;++i)
        printf("%d ",v[i]);

    fclose(in);
    fclose(out);
    return 0;
}