Cod sursa(job #2269732)

Utilizator bleo16783FMI Bleotiu Cristian bleo16783 Data 26 octombrie 2018 15:05:10
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>

using namespace std;
#define N 100100
int v[N],n,i,j,curr[N];
ifstream fin("sortare.in");
ofstream fout("sortare.out");
void Merge(int v[],int left, int middle,int right)
{
    int it = left,i = left ,j = middle;
    while(i < middle && j < right)
    {
        if(v[i] < v[j])
        {
            curr[it] = v[i];
            ++i;
            ++it;
        }
        else
        {
            curr[it] = v[j];
            ++j;
            ++it;
        }
    }
    for(;i < middle; ++i)
    {
        curr[it] = v[i];
        ++it;
    }
    for(;j < right; ++j)
    {
        curr[it] = v[j];
        ++it;
    }
    for(it = left; it < right; ++it)
        v[it] = curr[it];
}
void MergeSort(int v[], int left, int right)
{
    if(left < right - 1)
    {
        int m = (left + right) / 2;
        MergeSort(v,left,m);
        MergeSort(v,m,right);
        Merge(v,left,m,right);
    }
}

int main()
{
    fin >> n;
    for(i = 0; i < n; ++i)
        fin >> v[i];
    MergeSort(v,0,n);
    for(i = 0; i < n; ++i)
        fout << v[i] << ' ';
    return 0;
}