Cod sursa(job #1784927)

Utilizator d0rina2011Craciun Dorina d0rina2011 Data 20 octombrie 2016 17:51:38
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>

using namespace std;

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

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

void inter(int i, int j){
    int k = 0, ii = i, jj = j, p, pp;
    while (i <= j && j <= n){
        if (v[i] <= v[j])
            w[++k] = v[i++];
        else w[++k] = v[j++];
    }
    while (i <= j) w[++k] = v[i++];
    while (j <= n) w[++k] = v[j++];
    for (p = ii, pp = 1; p <= jj; ++p, ++pp)
        v[p] = w[pp];
}

void mergesort(int st, int dr){
    if (st == dr)
        return;
    int mij = (st + dr) / 2;
    mergesort(st, mij);
    mergesort(mij + 1, dr);
    inter(st, dr);
}

int main()
{
    int i;
    fin >> n;
    for (i = 1; i <= n; i++)
        fin >> v[i];
    mergesort(1, n);
    for (i = 1; i <= n; i++)
        fout << v[i] << " ";
    return 0;
}