Pagini recente » Cod sursa (job #2076781) | Cod sursa (job #2173919) | Cod sursa (job #2878528) | Cod sursa (job #1348330) | Cod sursa (job #1464601)
#include<cstdio>
using namespace std;
int v[500010],aux[500010];
void interclasare(int left,int right){
int i=left,j=(left+right)/2+1,k=left-1;
while(i<=(left+right)/2&&j<=right)
if(v[i]>v[j]){
k++;
aux[k]=v[j];
j++;
}
else{
k++;
aux[k]=v[i];
i++;
}
while(i<=(left+right)/2){
k++;
aux[k]=v[i];
i++;
}
while(j<=right){
k++;
aux[k]=v[j];
j++;
}
for(i=left;i<=right;i++)
v[i]=aux[i];
}
void merge_sort(int left,int right){
int aux;
if(left==right)
return;
if(left+1==right){
if(v[left]>v[right]){
aux=v[left];
v[left]=v[right];
v[right]=aux;
}
return;
}
merge_sort(left,(left+right)/2);
merge_sort((left+right)/2+1,right);
interclasare(left,right);
}
int main(){
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
merge_sort(1,n);
for(i=1;i<=n;i++)
printf("%d ",v[i]);
return 0;
}