Pagini recente » Cod sursa (job #1591176) | Cod sursa (job #1587040) | Cod sursa (job #1932064) | Cod sursa (job #1714101) | Cod sursa (job #1314249)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,i,j,k,q;
long a[500001],b[500001];
void merge(int s,int m,int d)
{
i=s;j=m+1;k=s;
while(i<=m&&j<=d)
{if(a[i]<a[j])
{b[k]=a[i]; i++;}
else {b[k]=a[j]; j++;}
k++;}
if(i>m) for(q=j;q<=d;q++)
{
b[k]=a[q];
k++;
}
else for(q=i;q<=m;q++)
{
b[k]=a[q];
k++;
}
for(i=s;i<=d;i++)
a[i]=b[i];
}
void mergesort(int s,int d)
{
int m;
if(s<d)
{
m=(s+d)/2;
mergesort(s,m);
mergesort(m+1,d);
merge(s,m,d);
}
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
mergesort(1,n);
for(i=1;i<=n;i++)
g<<a[i]<<" ";
return 0;
}