Cod sursa(job #2330996)

Utilizator DianaIfrosaIfrosa Diana DianaIfrosa Data 29 ianuarie 2019 08:24:56
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>
#define N 500005
using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int n,a[N];
void Read()
{
    fin>>n;
    for(int i=1;i<=n;i++) fin>>a[i];
    fin.close();
}
void Interclasare(int s,int m,int d);

void MSort(int s,int d)
{
    if(s<d)
    {
        int m=(s+d)/2;
        MSort(s,m);
        MSort(m+1,d);
        Interclasare(s,m,d);
    }
}
void Interclasare(int s,int m,int d)
{    int b[N],k=0;
     int i=s, j=m+1;
    while(i<=m && j<=d )
        if(a[i]<a[j])
         {b[++k]=a[i]; i++;}
       else  {b[++k]=a[j]; j++;}


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

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

    for(int i=1,j=s;j<=d;i++,j++)
        a[j]=b[i];
}
void Write()
{
    for(int i=1;i<=n;i++) fout<<a[i]<<" ";
    fout.close();
}
int main()
{  Read();
    MSort(1,n);
    Write();

    return 0;
}