Pagini recente » Cod sursa (job #3120822) | Cod sursa (job #3173393) | Cod sursa (job #1402700) | Cod sursa (job #870956) | Cod sursa (job #2313837)
#include <bits/stdc++.h>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int NMAX=5e5;
int a[NMAX],N;
void v_merge(int a[],int l, int r, int m)
{
int i=l;
int j=m+1;
int p=l;
int c[NMAX];
while(i<=m && j<=r)
{
if(a[i]<=a[j])
{
c[p++]=a[i++];
}
else
{
c[p++]=a[j++];
}
}
for(i;i<=m;++i)
{
c[p++]=a[i];
}
for(j;j<=r;++j)
{
c[p++]=a[j];
}
for(int i=l;i<p;++i)
{
a[i]=c[i];
}
}
void merge_sort(int a[], int l, int r)
{
if(l<r)
{
int m=(l+r)/2;
merge_sort(a,l,m);
merge_sort(a,m+1,r);
v_merge(a,l,r,m);
}
return;
}
void read()
{
in>>N;
for(int i=0;i<N;++i)
{
in>>a[i];
}
}
void write()
{
for(int i=0;i<N;++i)
{
out<<a[i]<<" ";
}
}
int main()
{
read();
merge_sort(a,0,N-1);
write();
return 0;
}