Pagini recente » Cod sursa (job #1818745) | Cod sursa (job #1299546) | Cod sursa (job #220137) | Cod sursa (job #1283491) | Cod sursa (job #2428554)
#include <cstdio>
using namespace std;
int n;
int a[500001];
int merge(int a[], int l, int m, int r)
{
int n1 = m-l+1;
int n2 = r-m;
int L[n1], R[n2];
for(int i = 0; i < n1; ++i)
L[i] = a[l+i];
for(int j = 0; j < n2; ++j)
R[j] = a[m+1+j];
int i = 0, j = 0, k = l;
while(i < n1 && j < n2)
if(L[i] < R[j])
a[k++] = L[i++];
else
a[k++] = R[j++];
while(i < n1)
a[k++] = L[i++];
while(j < n2)
a[k++] = R[j++];
}
int sort(int a[], int l, int r)
{
if(l < r)
{
int m = l + (r-l)/2;
sort(a, l, m);
sort(a, m+1, r);
merge(a, l, m, r);
}
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &n);
for(int i = 0; i < n; ++i)
scanf("%d", &a[i]);
sort(a, 0, n-1);
for(int i = 0; i < n; ++i)
printf("%d ", a[i]);
return 0;
}