Pagini recente » Cod sursa (job #456805) | Cod sursa (job #1798381) | Cod sursa (job #3243748) | Cod sursa (job #1457411) | Cod sursa (job #1604359)
#include <cstdio>
using namespace std;
const int Nmax = 500000 + 5;
int a[Nmax], n;
void Ic(int left, int mid, int right);
void Sort(int left, int right)
{
int mid;
if (left != right){
mid = (left + right) / 2;
Sort(left, mid);
Sort(mid + 1, right);
Ic(left, mid, right);
}
}
void Ic(int left, int mid, int right)
{
int b[Nmax], i, j, k, tmp;
for (i = left; i <= right; ++i)
b[i] = a[i];
i = left; j = mid + 1; k = i - 1;
while (i <= mid && j <= right)
(b[i] < b[j])? a[++k] = b[i++] : a[++k] = b[j++];
for (tmp = i; tmp <= mid; ++tmp)
a[++k] = b[tmp];
for (tmp = j; tmp <= right; ++tmp)
a[++k] = b[tmp];
}
int main()
{
freopen ("algsort.in", "r", stdin);
freopen ("algsort.out", "w", stdout);
scanf ("%d", &n);
for (int i = 1; i <= n; ++i)
scanf ("%d", &a[i]);
Sort (1, n);
for (int i = 1; i <= n; ++i)
printf ("%d ", a[i]);
return 0;
}