Cod sursa(job #288378)

Utilizator cristikIvan Cristian cristik Data 25 martie 2009 19:07:46
Problema Sortare prin comparare Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>
int a[500000],n;
int divide(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=divide(p,q);
    if(m-1>p) qsort(p,m-1);
    if(m+1<q) qsort(m+1,q);
}
int main()
{
    int 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;
}