Pagini recente » Cod sursa (job #2238059) | Cod sursa (job #1811526) | Cod sursa (job #585484) | Cod sursa (job #2604027) | Cod sursa (job #1868303)
#include<cstdio>
#include<algorithm>
using namespace std;
const int NMAX=100005;
int v[NMAX],aux[NMAX];
void inter(int a,int b,int d)
{
int c,old,cnt,i;
c=b+1;
old=a;
cnt=0;
while(a<=b && c<=d)
{
if(v[a]<v[c])
aux[++cnt]=v[a++];
else
aux[++cnt]=v[c++];
}
while(a<=b)
aux[++cnt]=v[a++];
while(c<=d)
aux[++cnt]=v[c++];
for(i=1; i<=cnt; i++)
v[i+old-1]=aux[i];
}
void ms(int i,int j)
{
int mij;
if(i==j)
return ;
if(i==j-1)
if(v[j]<v[i])
swap(v[i],v[j]);
mij=(i+j)/2;
ms(i,mij);
ms(mij+1,j);
inter(i,mij,j);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int t,n,c,sum,i,k;
scanf("%d ",&n);
for(i=1; i<=n; ++i)
scanf("%d",&v[i]);
ms(1,n);
for(i=1; i<=n; i++)
printf("%d ",v[i]);
printf("\n");
return 0;
}