Cod sursa(job #1462632)

Utilizator HealeruDaniel Guramulta Healeru Data 18 iulie 2015 17:03:14
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#define nmax 500001
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int a[nmax],n;

void Interclasare(int s,int m,int f)
{
    int i=s,j=m+1,k=0;
    int b[nmax];
    while (i<=m && j<=f)
        if (a[i]<a[j]) b[k++]=a[i++];
            else b[k++]=a[j++];
    while (i<=m) b[k++]=a[i++];
    while (j<=f) b[k++]=a[j++];
    for (i=s; i<=f; i++) a[i]=b[i-s];
}

void Msort(int s,int f)
{
    if (f>s)
    {
        int m=(s+f)/2;
        Msort(s,m);
        Msort(m+1,f);
        Interclasare(s,m,f);
    }
}

void citire()
{
    fin>>n;
    for (int i=0;i<n;i++) fin>>a[i];
    fin.close();
}

void afisare()
{
    for (int i=0;i<n;i++) fout<<a[i]<<' ';
    fout.close();
}

int main()
{
    citire();
    Msort(0,n-1);
    afisare();
    return 0;
}