Pagini recente » Cod sursa (job #2329827) | Cod sursa (job #1294134) | Cod sursa (job #870563) | Cod sursa (job #1048579) | Cod sursa (job #747658)
Cod sursa(job #747658)
#include<cstdio>
#define DMAX 500000
using namespace std;
int v[DMAX],n;
void citire()
{
freopen("algsort.in","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
}
void interclasare(int a,int b,int m)
{
int aux[DMAX],i=a,j=b+1,k=0;
while(i<=b&&j<=m)
if(v[i]<v[j])
aux[++k]=v[i++];
else
aux[++k]=v[j++];
while(i<=b)
aux[++k]=v[i++];
while(j<=m)
aux[++k]=v[j++];
for(i=a;i<=m;i++)
v[i]=aux[i-a+1];
}
void sortare(int a,int b)
{
if(b>a)
{
int m=(a+b)/2;
sortare(a,m);
sortare(m+1,b);
interclasare(a,m,b);
}
}
void afisare()
{
freopen("algsort.out","w",stdout);
for(int i=1;i<=n;i++)
printf("%d ",v[i]);
}
int main()
{
citire();
sortare(1,n);
afisare();
}