Pagini recente » Cod sursa (job #2732698) | Cod sursa (job #2535858) | Cod sursa (job #824219) | Cod sursa (job #577115) | Cod sursa (job #650330)
Cod sursa(job #650330)
#include<stdio.h>
int a[500001],n;
void sort(int s,int d){
int m;
if(a[s]>a[d]) {
m=a[s];
a[s]=a[d];
a[d]=m;
}
}
void interclasare(int s,int d,int m) {
int i,j,k=1,b[500001];
i=s,j=m+1;
while(i<=m && j<=d)
if(a[i]<=a[j]) {
b[k++]=a[i];
++i;
}
else {
b[k++]=a[j];
++j;
}
if(i<=m)
for(j=i;j<=m;j++)
b[k++]=a[j];
else
for(i=j;i<=d;i++)
b[k++]=a[i];
k=1;
for(i=s;i<=d;i++)
a[i]=b[k++];
}
void MergeSort(int s,int d){
int m;
if((d-s)<=1)
sort(s,d);
else
{
m=(s+d)/2;
MergeSort(s,m);
MergeSort(m+1,d);
interclasare(s,d,m);
}
}
int main(){
int i;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d", &n);
for(i=1;i<=n;i++)
scanf("%d ",&a[i]);
MergeSort(1,n);
for(i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}