Cod sursa(job #899321)

Utilizator gapdanPopescu George gapdan Data 28 februarie 2013 13:56:55
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<cstdio>
using namespace std;
int a[500001];
int div(int p, int q)
{
    int st=p,dr=q,x=a[p];
    while (st<dr)
    {
        while (st<dr && a[dr]>=x) --dr;
        a[st]=a[dr];
        while (st<dr && a[st]<=x) ++st;
        a[dr]=a[st];
    }
    a[st]=x;
    return st;
}
void qsort(int p, int q)
{
    int m=div(p,q);
    if (m-1>p) qsort(p,m-1);
    if (m+1<q) qsort(m+1,q);
}
int main()
{
    int n,i;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;++i)
        scanf("%d",&a[i]);
    qsort(1,n);
    for (i=1;i<=n;++i)
        printf("%d ",a[i]);
    return 0;
}