Cod sursa(job #2057774)

Utilizator biaiftimeIftime Bianca biaiftime Data 4 noiembrie 2017 18:57:35
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <cstdlib>
#define Nmax 500002
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int a[Nmax],n;
void Read(int &n,int a[Nmax])
{
    int i;
    fin>>n;
    for(i=1;i<=n;++i)
    fin>>a[i];
}
int Pivotare(int a[Nmax],int s,int d)
{
    int pivot=a[d];
    int i=s-1,j;
    for(j=s;j<d;++j)
    if(a[j]<pivot){++i; swap(a[i],a[j]); }
    swap(a[i+1],a[d]);
    return i+1;
}
void QS(int a[Nmax],int s,int d)
{
    if(s<d)
    {
        int pivot=Pivotare(a,s,d);
        QS(a,s,pivot-1);
        QS(a,pivot+1,d);
    }
}
void Print(int n,int a[Nmax])
{
    int i;
    for(i=1;i<=n;i++)
    fout<<a[i]<<" ";
}
int main()
{
    Read(n,a);
    QS(a,1,n);
    Print(n,a);
    return 0;
}