Cod sursa(job #872227)

Utilizator gabriel93Robu Gabriel gabriel93 Data 5 februarie 2013 21:36:44
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<stdio.h>
#define Nmax 500002
using namespace std;
int n;
int a[Nmax];

int sel(int s,int f)
{
    int i,j,di,dj,aux;
    i=s; j=f; di=1; dj=0;
    while(i<j)
    {
        if(a[i]>a[j])
        {
            aux=a[i];
            a[i]=a[j];
            a[j]=aux;
            di=1-di;
            dj=1-dj;
        }
        i=i+di;
        j=j-dj;
    }
    return i;
}

void qs(int s,int f)
{
    int m;
    if(s<f)
    {
        m=sel(s,f);
        qs(s,m-1);
        qs(m+1,f);
    }
}

void rezolv()
{
    int i;
    scanf("%d",&n);
    for(i=1;i<=n;++i)
        scanf("%d",&a[i]);
    qs(1,n);
    //qs(0,n-1);
    for(i=1;i<=n;++i)
        printf("%d ",a[i]);
}

int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    rezolv();
    fclose(stdin);
    fclose(stdout);
    return 0;
}