Pagini recente » Cod sursa (job #2037226) | Cod sursa (job #2563892) | Cod sursa (job #1633860) | Cod sursa (job #837121) | Cod sursa (job #2221390)
#include <iostream>
#include <cstdio>
using namespace std;
int A[500001];
int aux[500001];
void mergeSort(int left, int right)
{
if(left == right)
return;
int middle = (left + right) / 2;
mergeSort(left, middle);
mergeSort(middle + 1, right);
int i = left, j = middle + 1, k = left;
int aux[right - left];
while(i <= middle)
{
while(j <= right && A[j] < A[i])
{
aux[k++] = A[j++];
}
aux[k++] = A[i++];
}
while(j <= right)
aux[k++] = A[j++];
for(int ind = left; ind <= right; ++ind)
{
A[ind] = aux[ind];
}
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int n;
scanf("%d", &n);
for(int i = 0; i < n; ++i)
scanf("%d", &A[i]);
mergeSort(0, n - 1);
for(int i = 0; i < n; ++i)
printf("%d ", A[i]);
return 0;
}