Cod sursa(job #2085803)

Utilizator codrin18Diac Eugen Codrin codrin18 Data 10 decembrie 2017 18:44:24
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
                                           ///   Merge Sort  ///

#define For(i, a, b)  for (int i = (a); i <= (b); ++ i)

using namespace std;

void Intercl (int* x, int s, int m, int d)
{
     int z[d-s+2], k=0;
     int i=s, j=m+1;
     while (i<=m and j<=d)
            if (x[i]<x[j]) z[++k]=x[i++]; else
                           z[++k]=x[j++];
     while (i<=m)          z[++k]=x[i++];
     while (j<=d)          z[++k]=x[j++];
     For (i,1,k)  x[s+i-1]=z[i];
}

void M_s (int* X, int d, int s=1)
{
     if (s<d)  { int m=(s+d)/2;
                 M_s(X,m,s); M_s(X,d,m+1);
                 Intercl(X,s,m,d);
}              }

int main()
{

    ifstream f("algsort.in");
    ofstream g("algsort.out");
    int n,v[200005];
    f>>n;
    for (int i=1;i<=n;i++)
        f>>v[i];
    M_s(v,n);
    for (int i=1;i<=n;i++)
        g<<v[i]<<" ";
    return 0;
}