Cod sursa(job #2274963)

Utilizator dianamichesaRosu Diana Michesa dianamichesa Data 2 noiembrie 2018 18:11:23
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int N = 500001;
int n, v[N];
void intercls (int v[], int st, int mij, int dr){
    int n1 = mij - st + 1, n2 = dr - mij;
    int v1[n1 + 2], v2[n2 + 2];
    for(int i = 1; i <= n1; i ++)
        v1[i] = v[st + i - 1];
    for(int i = 1; i <= n2; i ++)
        v2[i] = v[mij + i];
    int i = 1, j = 1, k = st;
    while(i <= n1 && j <= n2){
        if(v1[i] <= v2[j])
            v[k ++] = v1[i ++];
        else
            v[k ++] = v2[j ++];
    }
    while(i <= n1)
        v[k ++] = v1[i ++];
    while(j <= n2)
        v[k ++] = v2[j ++];
}
void mergesort (int v[], int st, int dr){
    if(st < dr){
        int mij = (st + dr) / 2;
        mergesort (v, st, mij);
        mergesort (v, mij + 1, dr);
        intercls (v, st, mij, dr);
    }
}
void afisare (int v[]){
    for(int i = 1; i <= n ;i ++)
        g << v[i] << ' ';
}
int main()
{
    f >> n;
    for(int i = 1; i <= n; i ++)
        f >> v[i];
    mergesort (v, 1, n);
    afisare (v);
    return 0;
}