Cod sursa(job #984538)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 14 august 2013 18:47:56
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int N,Array[500002],Aux[500002];
void Read()
{
    f>>N;
    int i;
    for(i=1;i<=N;i++)
        f>>Array[i];
}
void DEI(int Left,int Right)
{
    if(Left==Right)
        return;
    if(Right-Left==1)
        if(Array[Left]>Array[Right])
            swap(Array[Left],Array[Right]);
    int Mid=(Left+Right)/2;
    DEI(Left,Mid);
    DEI(Mid+1,Right);
    int i=Left,j=Mid+1,k=0;
    while(i<=Mid && j<=Right)
    {
        if(Array[i]<Array[j])
            Aux[++k]=Array[i++];
        else
            Aux[++k]=Array[j++];
    }
    if(i<=Mid)
        for(;i<=Mid;i++)
            Aux[++k]=Array[i];
    if(j<=Right)
        for(;j<=Right;j++)
            Aux[++k]=Array[j];
    for(i=1;i<=k;i++)
        Array[i+Left-1]=Aux[i];
}
void Print()
{
    int i;
    for(i=1;i<=N;i++)
        g<<Array[i]<<" ";
    g<<"\n";
}
int main()
{
    Read();
    DEI(1,N);
    Print();
    return 0;
}