Cod sursa(job #2745588)

Utilizator mihaicrisanMihai Crisan mihaicrisan Data 26 aprilie 2021 20:05:37
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

using namespace std;

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

int n, i;
int v[500004];

void interclasare(int st, int mid, int dr){
    int k = 0, i, j;
    int aux[500004];
    i = st, j = mid + 1;
    while (i <= mid && j <= dr){
        if (v[i] < v[j])
            aux[++k] = v[i++];
        else
            aux[++k] = v[j++];
    }
    for ( ; i <= mid; i++)
        aux[++k] = v[i];
    for ( ; j <= dr; j++)
        aux[++k] = v[j];

    for (i = st; i <= dr; i++)
        v[i] = aux[i-st+1];
}

void MergeSort(int st, int dr){
    if (st == dr)
        return;
    int mid = (st + dr) / 2;
    MergeSort(st, mid);
    MergeSort(mid + 1, dr);
    interclasare(st, mid, dr);
}

int main(){
    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;
}