Pagini recente » Cod sursa (job #2366275) | Cod sursa (job #236905) | Cod sursa (job #546283) | infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #871786)
Cod sursa(job #871786)
#include<stdio.h>
#define Nmax 500002
using namespace std;
int n,a[Nmax],b[Nmax];
void merge_sort(int s,int f)
{
int m,i,j,k;
if(s==f)
return;
//m=(s+f) >> 1;
m=s+((f-s)>>1);
merge_sort(s,m);
merge_sort(m+1,f);
i=s;
j=m+1;
for(k=s;i<=m || j<=f;++k)
if(j>f|| (i<=m && a[i]<a[j]))
{
b[k]=a[i];
++i;
}
else
{
b[k]=a[j];
++j;
}
for(i=s;i<=f;++i)
a[i]=b[i];
}
void rezolv()
{
int i;
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&a[i]);
merge_sort(1,n);
for(i=1;i<=n;++i)
printf("%d ",a[i]);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
rezolv();
fclose(stdin);
fclose(stdout);
return 0;
}