Cod sursa(job #1583736)

Utilizator iulian_f2kGuraliuc Iulian iulian_f2k Data 29 ianuarie 2016 11:56:59
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#define NMAX 500005
using namespace std;
int a[NMAX],N;

void qswap(int i, int j)
{
    int aux=a[i];
    a[i]=a[j];
    a[j]=aux;
}

void qsort(int left, int right)
{
    if(left>=right)
        return;
    int piv=left+(right-left)/2;
    qswap(left,piv);
    int last=left;
    for(int i=left+1; i<=right; i++)
    {
        if(a[i]<a[left])
            qswap(++last,i);
    }
    qswap(last,left);
    qsort(left,last-1);
    qsort(last+1,right);
}

int main()
{
    freopen("algsort.in","rt",stdin);
    freopen("algsort.out","wt",stdout);
    scanf("%d", &N);
    for(int i=1;i<=N;i++)
        scanf("%d", &a[i]);
    qsort(1,N);
    for(int i=1;i<=N;i++)
        cout<<a[i]<<' ';
    return 0;
}