Pagini recente » Cod sursa (job #2382928) | Cod sursa (job #1270341) | Cod sursa (job #48223) | Cod sursa (job #897307) | Cod sursa (job #2267831)
/**
* Worg
*/
#include <cstdio>
#define DIM 500500
using namespace std;
FILE *fin=freopen("algsort.in","r",stdin); FILE *fout=freopen("algsort.out","w",stdout);
int A[DIM];
int aux[DIM];
int n;
void Read() {
scanf("%d", &n);
for(int i = 1; i <= n; ++i)
scanf("%d", &A[i]);
}
inline void Unite(int st, int m, int dr) {
int i = st, j = m + 1, k = 0;
while( i <= m && j <= dr ) {
if (A[i] < A[j])
aux[++k] = A[i], ++i;
else
aux[++k] = A[j], ++j;
}
while (i <= m)
aux[++k] = A[i], ++i;
while (j <= dr)
aux[++k] = A[j], ++j;
for (int i = st; i <= dr; ++i)
A[i] = aux[i - st + 1];
}
inline void Merge_Sort(int st, int dr) {
int m;
if (dr > st) {
m = (st + dr) / 2;
Merge_Sort(st, m);
Merge_Sort(m + 1, dr);
Unite(st, m, dr);
}
}
int main() {
Read();
Merge_Sort(1, n);
for (int i = 1; i <= n; ++i)
printf("%d ", A[i]);
return 0;
}