Cod sursa(job #1312644)

Utilizator priestnoobFMI - Dan Nema priestnoob Data 9 ianuarie 2015 20:10:06
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<stdio.h>
#include<algorithm>

using namespace std;

#define nmax 500005

int n,v[nmax];

int pivot ( int v[], int l, int r )
{
    int p,st=l,dr=r,x;
    p=rand()%(r-l+1)+l;
    x=v[p];
    while(st<=dr)
    {
        while (v[st]<x) st++;
        while (v[dr]>x) dr--;
        if(st<=dr) swap(v[st],v[dr]), st++, dr--;
    }
    return dr;
}

void quicksort ( int v[], int l, int r )
{
    if (l<r) {
    int p = pivot ( v, l, r );
    quicksort ( v, l, p );
    quicksort ( v, p+1, r );
    }
}

void citire()
{
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
        scanf("%d",&v[i]);
}

void afisare()
{
    for(int i=1;i<=n;++i)
        printf("%d ",v[i]);
}

int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    citire();
    quicksort( v, 1, n );
    afisare();
}