Pagini recente » Cod sursa (job #1010408) | Cod sursa (job #398548) | Cod sursa (job #503466) | Cod sursa (job #1007997) | Cod sursa (job #2613731)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int N=500000;
int c[N],a[N];
void interclasare(int a[], int st, int m, int dr)
{
int i = st, j = m + 1, k = -1;
while (i <= m && j <= dr)
if (a[i] < a[j]) c[++k] = a[i++];
else c[++k] = a[j++];
while (i <= m) c[++k] = a[i++];
while (j <= dr) c[++k] = a[j++];
for (i = 0; i <= k; i++) a[st + i] = c[i];
}
void Msort(int a[], int st, int dr)
{
int m = st + (dr - st) / 2;
if (st < dr)
{
Msort(a, st, m);
Msort(a, m + 1, dr);
interclasare(a, st, m, dr);
}
}
int main()
{
int n, i;
in>>n;
for (i = 0; i < n; i++)
in>>a[i];
Msort(a, 0, n - 1);
for (i = 0; i < n; i++) out<< a[i] << " ";
return 0;
}