Cod sursa(job #1668209)

Utilizator gandalfMoraru Andrei Sebastian gandalf Data 29 martie 2016 17:17:10
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>
using namespace std;

long a[500000],n,x,m;
void schimba(long &a,long &b)
{
    long aux=a;
    a=b;
    b=aux;
}
void div(long s,long d,long &m)
{
    int i=s,j=d;
    long pi=0,pj=1;
    while(i<j)
    {
        if(a[i]>a[j])
        {
            schimba(a[i],a[j]);
            schimba(pi,pj);
        }
        i=i+pi;
        j=j-pj;
    }
    m=i;
}
void Quick_sort(long s,long d)
{
    int i;
    if(s<d)
    {
        div(s,d,m);
        Quick_sort(s,m-1);
        Quick_sort(m+1,d);
    }
}
int main ()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int i;
 scanf("%d",&n);
 for(i=1;i<n+1;i++)
    scanf("%d",&a[i]);

    Quick_sort(1,n);
    for(i=1; i<n+1; i++)
        printf("%d ",a[i]);
    return 0;
}