Cod sursa(job #2943003)

Utilizator AnSeDraAndrei Sebastian Dragulescu AnSeDra Data 20 noiembrie 2022 14:16:52
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>

using namespace std;

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

#define Nmax 500000

int v[Nmax], h[Nmax];

void mergeSort(int begin, int end)
{
    int mid, i, j, poz;

    if(begin == end)
    {
        return;
    }

    mid = (begin + end) / 2;

    mergeSort(begin, mid);
    mergeSort(mid + 1, end);

    i = begin;
    j = mid + 1;
    poz = 0;

    while(i <= mid && j <= end)
    {
        if(v[i] < v[j])
        {
            h[poz++] = v[i];
            i++;
        }
        else
        {
            h[poz++] = v[j];
            j++;
        }
    }

    while(i <= mid)
    {
        h[poz++] = v[i];
        i++;
    }

    while(j <= end)
    {
        h[poz++] = v[j];
        j++;
    }

    for(i = 0; i < poz; i++)
    {
        v[i + begin] = h[i];
        h[i] = 0;
    }
}

int main()
{
    int n, i;

    fin >> n;

    for(i = 0; i < n; i++)
    {
        fin >> v[i];
    }

    mergeSort(0, n - 1);

    for(i = 0; i < n; i++)
    {
        fout << v[i] << " ";
    }

    return 0;
}