Cod sursa(job #240379)

Utilizator DraStiKDragos Oprica DraStiK Data 7 ianuarie 2009 15:22:06
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
int n;
int a[500001];
void read ()
{
    int i;
    scanf ("%d",&n);
    for (i=1; i<=n; ++i)
        scanf ("%d",&a[i]);
}
void print ()
{
    int i;
    for (i=1; i<=n; ++i)
        printf  ("%d ",a[i]);
}
int divide (int p,int q)
{
    int st,dr,x;
    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;
    m=divide (p,q);
    if (m-1>p)
        qsort (p,m-1);
    if (m+1<q)
        qsort (m+1,q);
        
}
int main ()
{
    freopen ("algsort.in","r",stdin);
    freopen ("algsort.out","w",stdout);
    read ();
    qsort (1,n);
    print ();
}