Pagini recente » Cod sursa (job #2117064) | Cod sursa (job #807755) | Cod sursa (job #1606884) | Cod sursa (job #2894770) | Cod sursa (job #589567)
Cod sursa(job #589567)
#include <iostream>
#include <stdio.h>
using namespace std;
const int d=500001;
void Merge(int x[d], int l, int m, int r){
int i=l,j=m+1,k=l;
int b[d];
while (i<=m && j<=r)
b[k++]=x[i] < x[j] ? x[i++] : x[j++];
while (i<=m)
b[k++]=x[i++];
while (j<=r)
b[k++]=x[j++];
for (i=l; i<=r; ++i)
x[i]=b[i];
}
void MergeSort(int x[d], int l, int r){
if (l >= r)
return;
int m=l+(r-l)/2;
MergeSort(x,l,m);
MergeSort(x,m+1,r);
Merge(x,l,m,r);
}
int main(){
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int n;
scanf("%d",&n);
int a[d];
for (int i=0; i<n; ++i)
scanf("%d",a+i);
MergeSort(a,0,n-1);
for (int i=0; i<n; ++i)
printf("%d ",a[i]);
return 0;
}