Pagini recente » Cod sursa (job #2503243) | Cod sursa (job #2166926) | Cod sursa (job #2919479) | Cod sursa (job #467081) | Cod sursa (job #1516208)
#include<iostream>
#include<fstream>
#include<stdio.h>
using namespace std;
int i, n,p;
int v[500001];
int a[250000];
void interclasare(int i, int m, int j)
{
int x = i;
int k = 0;
int y = m + 1;
while((x<=m)&&(y<=j))
if (v[x] < v[y])
{
a[++k] = v[x];
x++;
}
else
{
a[++k] = v[y];
y++;
}
if (y > j)
for (p = x; p <= m; p++)
{
a[++k] = v[p];
}
if (x > m)
for (p = y; p <= j; p++)
{
a[++k] = v[p];
}
for (p = 1; p <= k; p++)
v[i+p-1] = a[p];
}
void divide(int i, int j)
{
if (i < j) {
int m = (i + j) / 2;
divide(i, m);
divide(m + 1, j);
interclasare(i, m, j);
}
}
int main() {
ifstream f("algsort.in");
ofstream g("algsort.out");
f >> n;
for (i = 1; i <= n; i++)
f >> v[i];
divide(1, n);
for (i = 1; i <= n; i++)
g << v[i]<<' ';
return 0;
}