Cod sursa(job #2758349)

Utilizator ste2021Stefan Stefan ste2021 Data 9 iunie 2021 22:02:11
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include<iostream>
//mergesort

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int v[500001];
void interclasare(int st, int dr, int mij)
{
    int aux[500001], i, j, k = 0;
    i = st;
    j = mij + 1;
    while(i <= mij && j <= dr)
        if(v[i] < v[j]) aux[++k] = v[i++];
        else aux[++k] = v[j++];
    while(i <= mij)
        aux[++k] = v[i++];
    while(j <= dr)
        aux[++k] = v[j++];

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

void mergesort(int st, int dr)
{
    if(st < dr)
    {
        int mij = (st + dr) / 2;
        mergesort(st, mij);
        mergesort(mij + 1, dr);
        interclasare(st, dr, mij);
    }
}
int main()
{
    int n;
    f >> n;

    for(int i = 0; i < n; i++)
        f >> v[i];

    mergesort(0, n-1);

    for(int i = 0; i < n; i++)
        g << v[i] << " ";

    return 0;
    f.close();
    g.close();
}