Pagini recente » Cod sursa (job #2035680) | Cod sursa (job #2775009) | Cod sursa (job #1206850) | Monitorul de evaluare | Cod sursa (job #1022935)
#include<iostream>
#include<fstream>
using namespace std;
int v[500001],b[500001];
void merge(int l,int m,int r)
{
int p=l,q=m+1,k=l-1,i;
while(p<=m && q<=r)
if(v[p]<v[q])
b[++k]=v[p++];
else
b[++k]=v[q++];
while(p<=m)
b[++k]=v[p++];
while(q<=r)
b[++k]=v[q++];
for(i=l;i<=r;i++)
v[i]=b[i];
}
void mergesort (int l,int r)
{
int m;
m=(l+r)/2;
if(l<r)
{
mergesort(l,m);
mergesort(m+1,r);
merge(l,m,r);
}
}
int main()
{
int n,i;
ifstream fcin("algsort.in");
ofstream fcout("algsort.out");
fcin>>n;
for(i=1;i<=n;i++)
fcin>>v[i];
mergesort(1,n);
for(i=1;i<=n;i++)
fcout<<v[i]<<" ";
return 0;
}