Cod sursa(job #965759)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 24 iunie 2013 17:08:52
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
// QuickSort

#include<cstdio>
#include<algorithm>
using namespace std;
const int NMAX = 500005;
int N,i,A[NMAX];
int Partition(int l,int r)
{
    int x=A[(l+r)/2],i=l-1,j=r+1;
    for(;;)
    {
        do j--; while(A[j]>x);
        do i++; while(A[i]<x);
        if(i<j) swap(A[j],A[i]);
        else return j;
    }
}
void QuickSort(int l,int r)
{
    if(l<r)
    {
        int q=Partition(l,r);
        QuickSort(l,q);
        QuickSort(q+1,r);
    }
}
int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&N);
    for(i=1;i<=N;i++) scanf("%d",&A[i]);
    QuickSort(1,N);
    for(i=1;i<=N;i++) printf("%d ",A[i]);
    return 0;
}