Cod sursa(job #1727948)

Utilizator silkMarin Dragos silk Data 11 iulie 2016 22:18:45
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
#define NMax 500005

int v[NMax];

int divide(int p, int q)
{
    int st = p, dr = q, x = v[p];
    while(st < dr)
    {
        while( st < dr && v[dr] >= x ) dr--;
        v[st] = v[dr];
        while( st < dr && v[st] <= x ) st++;
        v[dr] = v[st];
    }

    v[st] = x;

    return st;
}

void Quick( int p, int q )
{

    int m = divide(p,q);
    if( m - 1 > p ) Quick(p,m-1);
    if( m + 1 < q ) Quick(m+1,q);
}

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

    int n;

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

    Quick(1,n);

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


return 0;
}