Pagini recente » Cod sursa (job #1636727) | Cod sursa (job #1534538) | Cod sursa (job #389819) | Cod sursa (job #430088) | Cod sursa (job #2307244)
#include <iostream>
#include <fstream>
using namespace std;
const int dim = 500000;
void interclasare(int v[], int left, int right, int mid) {
int aux[dim], i, j;
i = left, j = mid +1;
int contor = left - 1;
while (i <= mid and j <= right) {
if (v[i] <= v[j]) {
aux[++contor] = v[i];
i++;
} else {
aux[++contor] = v[j];
j++;
}
}
while (i <= mid) {
aux[++contor] = v[i];
i++;
}
while (j <= right) {
aux[++contor] = v[j];
j++;
}
for (i = left; i <= right; i++)
v[i] = aux[i];
}
void mergeSort(int v[], int left, int right) {
if (left >= right) {
return;
}
int mid = (left + right) / 2;
mergeSort(v, left, mid);
mergeSort(v, mid + 1, right);
interclasare(v, left, right, mid);
}
int main() {
int v[dim], n;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
//Input
cin >> n;
for (int i = 0; i < n; i++)
cin >> v[i];
//Solve
interclasare(v, 0, n - 1, (n-1)/2);
//Print
for (int i = 0; i < n; i++)
cout << v[i] << " ";
return 0;
}