Pagini recente » Cod sursa (job #2562988) | Cod sursa (job #2489388) | Cod sursa (job #2432012) | Cod sursa (job #387717) | Cod sursa (job #1244657)
#include <stdio.h>
#include <iostream>
using namespace std;
void inter_clasare(int a[], long int left, long int right)
{
int b[250001];
long int i,j,k=0,m=(left+right)/2;
for(i=0;i<m;i++)
b[i]=a[i];
i=0;
j=m;
while((i<m)&&(j<=right))
a[k++]=(b[i]<a[j]) ? b[i++] : a[j++];
while(i<m)
a[k++]=b[i++];
}
void merge_sort(int a[],long int left,long int right)
{
long int m=(left+right)/2;
if(right-left>=1)
{
merge_sort(a,left,m);
merge_sort(a,m+1,right);
}
inter_clasare(a,left,right);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
long int n,i;
int a[500001];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
merge_sort(a,0,n-1);
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}