Cod sursa(job #2897320)

Utilizator alisavaAlin Sava alisava Data 3 mai 2022 14:42:05
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500005];

void MergeSort(int st, int fn, int *v)
{
    if(st == fn)
        return;
    int mid = (st + fn) / 2;
    MergeSort(st, mid, v);
    MergeSort(mid + 1, fn, v);

    int i, j;
    i = st;
    j = mid + 1;
    vector<int> aux;
    while(i <= mid && j <= fn)
    {
        if(v[i] < v[j])
        {
            aux.push_back(v[i]);
            i++;
        }
        else
        {
            aux.push_back(v[j]);
            j++;
        }
    }

    while(j < fn)
        aux.push_back(v[j++]);
    while(i <= mid)
        aux.push_back(v[i++]);


    for(i = 0; i < aux.size(); i++)
        v[i + st] = aux[i];
}




int main()
{
    int n;
    fin >> n;
    for(int i = 1; i <= n; i++)
        fin >> v[i];
    MergeSort(1, n, v);
    for(int j = 1; j <= n; j++)
        fout << v[j] << " ";




    return 0;
}