Cod sursa(job #2622582)

Utilizator SahisttulArsene Marinel Sahisttul Data 1 iunie 2020 15:37:44
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int NMAX = 500001;

int v[NMAX], n;

void interclasare(int v[], int p, int u, int m)
{
    int a[NMAX];
    int i = p, j = m + 1, k = 1;
    while(i <= m && j <= u)
        if(v[i] <= v[j])
            a[k++] = v[i++];
        else
            a[k++] = v[j++];
    while(i <= m) a[k++] = v[i++];
    while(j <= u) a[k++] = v[j++];
    for(i = p, k = 1; i <= u; i++, k++)
        v[i] = a[k];
}

void merge_sort(int v[], int p, int u)
{
    if(p < u)
    {
        int m = (p + u)/2;
        merge_sort(v, p, m);
        merge_sort(v, m + 1, u);
        interclasare(v, p, u, m);
    }
}

int main()
{
    f >> n;
    for(int i = 1; i <= n; i++)
        f >> v[i];
    merge_sort(v, 1, n);
    for(int i = 1; i <= n; i++)
        g << v[i] << ' ';
    return 0;
}