Pagini recente » Cod sursa (job #2616965) | Cod sursa (job #365211) | Cod sursa (job #887833) | Cod sursa (job #908345) | Cod sursa (job #1022139)
#include<iostream>
#include<fstream>
using namespace std;
int a[500001],b[500001];
void merge(int st,int m,int dr)
{
int p=st,q=m+1,k=st-1,i;
while(p<=m && q<=dr)
if(a[p]<a[q])
b[++k]=a[p++];
else
b[++k]=a[q++];
while(p<=m)
b[++k]=a[p++];
while(q<=dr)
b[++k]=a[q++];
for(i=1;i<=k;i++)
a[i]=b[i];
}
void mergesort (int st,int dr)
{
int m;
m=(st+dr)/2;
if(st<dr)
{
mergesort(st,m);
mergesort(m+1,dr);
merge(st,m,dr);
}
}
int main()
{
int n,i;
ifstream fcin("algsort.in");
ofstream fcout("algsort.out");
fcin>>n;
for(i=1;i<=n;i++)
fcin>>a[i];
mergesort(1,n);
for(i=1;i<=n;i++)
fcout<<a[i]<<" ";
return 0;
}