Pagini recente » Cod sursa (job #1270960) | Cod sursa (job #102301) | Cod sursa (job #380223) | Cod sursa (job #911472) | Cod sursa (job #1512644)
#include <stdio.h>
#include <assert.h>
#include <string.h>
#define MAXN 500002
int N, A[MAXN], B[MAXN];
void MergeSort(int A[], int B[], int l, int r){
if (r == l)
{
B[l] = A[l];
return;
}
int mid = (l + r) / 2;
MergeSort(A, B, l, mid);
MergeSort(A, B, mid + 1, r);
int i = l, j = mid + 1;
for (int k = l; k <= r; ++k)
if ( j > r || B[i] < B[j] )
A[k] = B[i++];
else A[k] = B[j++];
memcpy(B + l, A + l, sizeof (int) * (r - l + 1));
}
int main(){
assert(freopen("algsort.in", "r", stdin));
freopen("algsort.out", "w", stdout);
scanf("%d", &N);
for (int i = 0; i < N; ++i) scanf("%d", &A[i]);
MergeSort(A, B, 0, N - 1);
for (int i = 0; i < N; ++i) printf("%d ", B[i]);
return 0;
}