Pagini recente » Cod sursa (job #188731) | Istoria paginii runda/avram_vara_1/clasament | Cod sursa (job #236893) | Cod sursa (job #2158265) | Cod sursa (job #2574257)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500002], sol[500002];
void mrgsort(int l, int r){
if(l+4>r){
for(int i=l;i<=r;++i){
for(int j=r;j>i;--j){
if(v[j]<v[j-1]) v[j-1]^=v[j]^=v[j-1]^=v[j];
}
}
}
else{
int mid=(l+r)/2;
mrgsort(l, mid);
mrgsort(mid+1, r);
int i=l, j=mid+1, k=0;
while(i<=mid&&j<=r){
if(v[i]<v[j]) sol[++k]=v[i++];
else sol[++k]=v[j++];
}
while(i<=mid) sol[++k]=v[i++];
while(j<=r) sol[++k]=v[j++];
for(int i=l,j=1;i<=r;++i,++j) v[i]=sol[j];
}
}
int main()
{
int n;
fin>>n;
for(int i=1;i<=n;++i){
fin>>v[i];
}
mrgsort(1, n);
for(int i=1;i<=n;++i){
fout<<v[i]<<" ";
}
return 0;
}