Cod sursa(job #1542648)

Utilizator TiberiuDTiberiu Danciu TiberiuD Data 5 decembrie 2015 15:47:49
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <iostream>

using namespace std;

int v[500000], aux[500000];

void interclasare(int v[], int st, int dr) {
    int i, j, k, m = (st + dr) / 2;
    i = k = st;
    j = m + 1;

    while(i <= m && j <= dr)
        if(v[i] <= v[j])
            aux[k++] = v[i++];
        else
            aux[k++] = v[j++];

    while(i <= m)
        aux[k++] = v[i++];
    while(j <= dr)
        aux[k++] = v[j++];

    for(k = st; k <= dr; k++)
        v[k] = aux[k];
}

void sortare(int v[], int st, int dr) {
    if(st == dr)
        return;

    int m = (st + dr) / 2;
    sortare(v, st, m);
    sortare(v, m + 1, dr);
    interclasare(v, st, dr);
}

int main() {
    ifstream in("algsort.in");
    ofstream out("algsort.out");

    if(!in || ! out)
        return 1;

    int n;
    in >> n;
    for(int i = 0; i < n; i++)
        in >> v[i];

    sortare(v, 0, n - 1);

    for(int i = 0; i < n; i++)
        out << v[i] << " ";

    in.close();
    out.close();
    return 0;
}