Cod sursa(job #3261204)

Utilizator Maan002Barbu Andrei Maan002 Data 4 decembrie 2024 17:57:40
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
using namespace std;

int n, v[500002], aux[500002];

void mergeSort (int st, int dr) {
    if (st == dr) {
        return;
    }
    int mij = (st + dr) / 2;
    mergeSort(st, mij);
    mergeSort (mij + 1, dr);
    int i= st, j = mij  + 1, k = 0;
    while (i <= mij && j <= dr) {
        if (v[i] < v[j]) {
            aux[++k] = v[i];
            ++i;
        } else {
            aux[++k] = v[j];
            ++j;
        }
    }
    while (i <= mij) {
        aux[++k] = v[i];
        ++i;
    }
    while (j <= dr) {
        aux[++k] = v[j];
        ++j;
    }
    for (int i = 1; i <= k; ++i) {
        v[st + i - 1] = aux[i];
    }

}

int main() {
    ifstream cin ("algsort.in");
    ofstream cout ("algsort.out");
    cin >> n;
    for (int i = 1; i <= n; ++i) {
        cin >> v[i];
    }
    mergeSort(1, n);
    for (int i = 1; i <= n; ++i) {
        cout << v[i] << " ";
    }
    return 0;
}