Pagini recente » Cod sursa (job #1371752) | Cod sursa (job #1273968) | Cod sursa (job #2398876) | Cod sursa (job #2380376) | Cod sursa (job #2271838)
#include<fstream>
#define N 500000
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
unsigned int v[N+1];
void merge(int st,int n){
if (st+1>=n) return ;
//cout<<st<<' '<<n<<endl;
merge(st,(st+n+1)/2);
merge((st+n+1)/2,n);
unsigned int aux[N+1];
int a=st,b=(st+n+1)/2;
for(int i=0;i<n-st && (a<(st+n+1)/2 || b<n);i++){
if (a>=(st+n+1)/2){
aux[i]=v[b];
b++;
}
else
if (b>=n){
aux[i]=v[a];
a++;
}
else
if (v[a]<v[b]){
aux[i]=v[a];
a++;
}
else {
aux[i]=v[b];
b++;
}
}
for(int i=0;i<n-st;i++)
v[st+i]=aux[i];
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>v[i];
merge(0,n);
for(int i=0;i<n;i++)
cout<<v[i]<<' ';
cout<<endl;
return 0;
}