Pagini recente » Cod sursa (job #3181299) | Cod sursa (job #286328) | Cod sursa (job #1219581) | Cod sursa (job #1372358) | Cod sursa (job #628762)
Cod sursa(job #628762)
#include <stdio.h>
int a[500008],n;
using namespace std;
void interclasare(int inc1, int sf1,int inc2, int sf2){
int d[500006];
int k=0;
int inc=inc1;
while(inc1<=sf1&&inc2<=sf2){
k++;
if(a[inc1]<a[inc2])
d[k]=a[inc1++];
else
d[k]=a[inc2++];
}
while(inc1<=sf1){
k++;
d[k]=a[inc1++];
}
while(inc2<=sf2){
k++;
d[k]=a[inc2++];
}
for(int i=1;i<=k;i++)
a[inc+i-1]=d[i];
}
void merge_sort(int inc,int sf){
if(inc+1<sf){
int m=(inc+sf)/2;
merge_sort(inc,m);
merge_sort(m+1,sf);
interclasare(inc,m,m+1,sf);
}
else
if(a[inc]>a[sf]){
int aux=a[inc];
a[inc]=a[sf];
a[sf]=aux;
}
}
int main(){
freopen("date.in","r",stdin);
freopen("date.out","w",stdout);
scanf("%d", &n);
for(int i=1;i<=n;i++){
scanf("%d", &a[i]);
}
merge_sort(1,n);
for(int i=1;i<=n;i++)
printf("%d ", a[i]);
return 0;
}