Cod sursa(job #1182420)

Utilizator rangerChihai Mihai ranger Data 6 mai 2014 13:09:57
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream >
using namespace std;

ifstream cin("algsort.in");
ofstream cout("algsort.out");

int  a[500100],n;

void merge(int left,int right)
{
    int i=left,j=right,m=(i+j)/2,b[j-i+1],c[j-i+1];
    if (m-left>0)  merge(left,m);
    if (right-m>1) merge(m+1,right);
    int k(0),k1(0),k2(0);
    for (;i<=right;i++)
        if (i<=m) b[++k1]=a[i];
           else c[++k2]=a[i];
    k=left-1;
    i=j=1;
    while (i<=k1 && j<=k2)
         if (b[i]<c[j]) a[++k]=b[i++];
           else a[++k]=c[j++];
    while (i<=k1) a[++k]=b[i++];
    while (j<=k2) a[++k]=c[j++];
}


int  main  ()
{
    cin>>n;
    for (int i=1;i<=n;i++) cin>>a[i];
    merge(1,n);
    for (int i=1;i<=n;i++) cout<<a[i]<<" ";

    cin.close();
    cout.close();
}