Pagini recente » Cod sursa (job #1725603) | Cod sursa (job #1724046) | Monitorul de evaluare | Cod sursa (job #1448106) | Cod sursa (job #1658750)
#include <iostream>
#include <fstream>
#define nx 500001
int n,a[nx],b[nx];
using namespace std;
int merge_sort(int i,int m, int j)
{
int x=i;
int k=1;
int y=m+1;
while(x<=m && y<=j)
{
if(a[x]<a[y]) b[k++]=a[x++];
else b[k++]=a[y++];
}
while(x<=m)
{
b[k++]=a[x++];
}
while(y<=j)
{
b[k++]=a[y++];
}
int t=i;
for(k=1;k<=(j-i)+1;++k)
{
a[t++]=b[k];
}
}
int divimp(int i,int j)
{
if(i<j)
{
int m=(i+j)/2;
divimp(i,m);
divimp(m+1,j);
merge_sort(i,m,j);
}
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(int i=1;i<=n;++i)
{
f>>a[i];
}
divimp(1,n);
for(int i=1;i<=n;++i)
{
g<<a[i]<<' ';
}
return 0;
}