Pagini recente » Cod sursa (job #1937346) | Cod sursa (job #2710380) | Cod sursa (job #2460725) | Cod sursa (job #2069992) | Cod sursa (job #2600402)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int nmax=500005;
int n,a[nmax],b[nmax];
void read()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>a[i];
}
void mergeLR(int l,int r,int mid)
{
int i=l,j=mid+1;
int ni=mid,nj=r;
int k=l;
while(i<=ni && j<=nj)
if(a[i]<=a[j])
b[k++]=a[i++];
else
b[k++]=a[j++];
while(i<=ni)
b[k++]=a[i++];
while(j<=nj)
b[k++]=a[j++];
for(int in=l;in<=r;in++)
a[in]=b[in];
}
void merge_sort(int l,int r)
{
int mid=(l+r)/2;
if(l==r)
return;
merge_sort(l,mid);
merge_sort(mid+1,r);
mergeLR(l,r,mid);
}
void print()
{
for(int i=1;i<=n;i++)
fout<<a[i]<<" ";
}
int main()
{
read();
merge_sort(1,n);
print();
return 0;
}