Cod sursa(job #2785095)

Utilizator Robys01Robert Sorete Robys01 Data 17 octombrie 2021 22:58:16
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

using namespace std;

ifstream cin("elmaj.in");
ofstream cout("elmaj.out");

int n, v[500001], b[500001];

void merge_sort(int v[], int st, int dr)
{
    if(st < dr) {
        int m = st + (dr - st)/2;  // (st + dr) / 2 
        merge_sort(v, st, m);
        merge_sort(v, m + 1, dr);

        // Interclasare
        int i = st, j = m + 1, k = 0;
        while(i <= m && j<= dr) 
            if(v[i] < v[j])
                b[++k] = v[i++];
            else
                b[++k] = v[j++];
            
        while(i <= m)
            b[++k] = v[i++];
        
        while(j <= dr)
            b[++k] = v[j++];

        for(int i = st, j = 1; i <= dr; i++, j++)
            v[i] = b[j];
    }
}

int main()
{
    cin>>n;
    for(int i = 1; i<=n; i++)
        cin>>v[i];

    merge_sort(v, 1, n);

    for(int i = 1; i<=n; i++)
        cout<<v[i]<<' ';
    return 0;
}