# PBinfo #1025 – mergesort – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Se dă un șir cu n elemente, numere întregi. Folosind metoda MergeSort (Sortare prin interclasare), ordonați crescător elementele acestui șir.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale șirului.

Date de ieșire
Programul va afișa pe ecran elementele șirului sortat, separate prin exact un spațiu.

Restricții și precizări

1 ≤ n ≤ 100.000
elementele șirului vor fi cuprinse între -1.000.000.000 și 1.000.000.000

Exemplu:
Intrare

12
10 0 -1 -3 1 -4 9 3 -1 -4 3 -4 
Ieșire

-4 -4 -4 -3 -1 -1 0 1 3 3 9 10

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
int n , v[100005], temp[100005];
void MergeSort(int st, int dr) {
    if (st < dr) {
        int m = (st + dr) / 2;
        MergeSort(st , m);
        MergeSort(m + 1 , dr);
        int i = st, j = m + 1, k = 0;
        while (i <= m && j <= dr)
            if (v[i] < v[j]) temp[++k] = v[i++];
            else temp[++k] = v[j++];
        while (i <= m) temp[++k] = v[i++];
        while (j <= dr) temp[++k] = v[j++];
        for (i = st, j = 1; i <= dr; i++, j++) v[i] = temp[j];
    }
}
int main() {
    cin >> n;
    for (int i = 0; i < n; i++) cin >> v[i];
    MergeSort(0, n - 1);
    for (int i = 0; i < n; i++) cout << v[i] << " ";
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1025)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1025/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1025/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
