Cod sursa(job #641566)

Utilizator StefanLacheStefan Lache StefanLache Data 28 noiembrie 2011 20:51:48
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<stdio.h>
void citire( int A[],int &n)
{
    int i;
    scanf("%i",&n);
    for(i=0;i<n;i++)
        scanf("%i",&A[i]);
}
void interschimbare(int &x,int &y)
{
    int aux=x;
    x=y;
    y=aux;
}
int pivot(int A[],int st,int dr)
{
    int i=st-1;
    int x=A[dr];
    int j;
    for(j=st;j<=dr-1;j++)
        if(A[j]<=x)
        {
            i++;
            interschimbare(A[i],A[j]);
        }
    interschimbare(A[i+1],A[dr]);
    return i+1;
}
void Quicksort(int A[],int st,int dr)
{
    if(st<dr)
    {
        int q=pivot(A,st,dr);
        Quicksort(A,st,q-1);
        Quicksort(A,q+1,dr);
    }
}
int main()
{
    int A[500000];
    int n;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    citire(A,n);
    Quicksort(A,0,n-1);
    for(int i=0;i<n;i++)
        printf("%i ",A[i]);
    return 0;
}