Cod sursa(job #1580087)

Utilizator ArkinyStoica Alex Arkiny Data 25 ianuarie 2016 15:25:48
Problema Sortare prin comparare Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.8 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)

void Qsort(int l,int r)
{
    int pivot,i,j=l,t;
    if(l<r)
    {
        pivot=l + rand()%(r-l+1);
        swap(v[pivot],v[r],t);
        pivot=r;
        for(i=l;i<r;++i)
            if(v[i]<v[pivot])
                swap(v[j],v[i],t),++j;
        swap(v[j],v[pivot],t);
        Qsort(l,j-1);
        Qsort(j+1,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;
}