Cod sursa(job #1804160)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 12 noiembrie 2016 11:53:53
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;

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

const int N = 500010;

int n, v[N], i, k[N];

void interclasare(int p, int m, int u){
    int i = p, j = m + 1, nr = p - 1;
    while (i <= m && j <= u) {
        if (v[i] < v[j]) {
            k[++nr] = v[i], i++;
        } else {
            k[++nr] = v[j], j++;
        }
    }
    while (i <= m) {
        k[++nr] = v[i], i++;
    }
    while (j <= u) {
        k[++nr] = v[j], j++;
    }
    for (i = p; i <= u; ++i) {
        v[i] = k[i];
    }
}

void sortare(int p, int u){
    if (p < u) {
        int m = (p + u) >> 1;
        sortare(p, m);
        sortare(m + 1, u);
        interclasare(p, m, u);
    }
}

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