Cod sursa(job #1250209)

Utilizator dragangabrielDragan Andrei Gabriel dragangabriel Data 27 octombrie 2014 21:41:05
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
//Dragan Andrei Gabriel - Grupa 131
//Quick Sort

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<climits>
#define dim 500001
using namespace std;
int n,v[dim];

void Quicksort(int st,int dr,int v[])
{
    int pivot=v[(st+dr)/2];
    int i=st,j=dr;
    while(i<=j)
    {
        while(pivot>v[i]) i++;
        while(pivot<v[j]) j--;
        if (i<j) {v[j]+=v[i],v[i]=v[j]-v[i],v[j]-=v[i],i++,j--;}else
            if (i==j) i++,j--;
    }
    if (i<dr) Quicksort(i,dr,v);
    if (st<j) Quicksort(st,j,v);
}

int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
        scanf("%d",&v[i]);
    Quicksort(1,n,v);
    for (int i=1;i<=n;i++)
        printf("%d ",v[i]);
    return 0;
}