Cod sursa(job #2624769)

Utilizator iuliangal186Gal Iulian iuliangal186 Data 5 iunie 2020 12:06:25
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[500001];
void interclasare(int s, int d, int m)
{
    int a[500001], i, j, k = 0;
    i = s;
    j = m + 1;
    while(i <= m && j <= d)
        if(v[i] < v[j]) a[++k] = v[i++];
        else a[++k] = v[j++];
    while(i <= m)
        a[++k] = v[i++];
    while(j <= d)
        a[++k] = v[j++];

    for(i = s, j = 1; j <= k; ++i, ++j)
        v[i] = a[j];
}

void mergesort(int s, int d)
{
    if(s < d)
    {
        int m = (s + d) / 2;
        mergesort(s, m);
        mergesort(m + 1, d);
        interclasare(s, d, m);
    }
}
int main()
{
    int n;
    fin >> n;
    for(int i = 1; i <= n; ++i)
        fin >> v[i];
    mergesort(1, n);
    for(int i = 1; i <= n; ++i)
        fout << v[i] << " ";
    return 0;
}