Cod sursa(job #1580085)

Utilizator ArkinyStoica Alex Arkiny Data 25 ianuarie 2016 15:22:33
Problema Sortare prin comparare Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.83 kb
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int v[500010],N;

void swap(int *x,int *y)
{
    int t=*x;
    *x=*y;
    *y=t;
}

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