Cod sursa(job #2477442)

Utilizator amalia.gemanGeman Aamalia amalia.geman Data 20 octombrie 2019 13:09:36
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#define N 500001
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int a[N],n,b[N];


void Interclasare(int s, int d)
{
    int m,k=s-1,i,j;
    m=(s+d)/2;
    i=s;
    j=m+1;

    while(i<=m && j<=d)
        if(a[i]>a[j])
    {
        b[++k]=a[j]; j++;
    }
    else {b[++k]=a[i]; i++;}

    while(i<=m){b[++k]=a[i]; i++;}
    while(j<=d){b[++k]=a[j]; j++;}

    for(i=s;i<=d;i++)
        a[i]=b[i];
}
void MgSort(int x, int y)
{
    int m;
    m=(x+y)/2;

    if(x!=y)
      {
          MgSort(x,m);
          MgSort(m+1,y);
          Interclasare(x,y);
      }
}

int main()
{

    fin>>n;
    for(int i=1;i<=n;++i)
        fin>>a[i];

    MgSort(1,n);


    for(int i=1;i<=n;i++)
        fout<<a[i]<<" ";
    return 0;
}