Mai intai trebuie sa te autentifici.
Cod sursa(job #3261204)
| Utilizator | 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;
}
