Pagini recente » Cod sursa (job #207548) | Cod sursa (job #3181868) | Cod sursa (job #2691859) | Cod sursa (job #3212585) | Cod sursa (job #3287997)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, v[500005];
void mergesort(int a, int b)
{
int c=(a + b) / 2;
if(a==b)
return;
else
{
mergesort(a, c);
mergesort(c + 1, b);
int x=a, y=c + 1, u[500005];
int nr = 0;
while(x<=c && y<=b)
{
if(v[x]<=v[y])
{
nr++;
u[nr]=v[x];
x++;
}
else
{
nr++;
u[nr]=v[y];
y++;
}
}
while(x <= c) {
nr++;
u[nr] = v[x];
x++;
}
while(y <= b) {
nr++;
u[nr] = v[y];
y++;
}
for(int i=a;i<=b;i++)
v[i]=u[i - a + 1];
}
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>v[i];
}
mergesort(1, n);
for(int i = 1; i <= n; i++) {
fout << v[i] << ' ';
}
return 0;
}