Pagini recente » Diferente pentru implica-te/arhiva-educationala intre reviziile 223 si 97 | Cod sursa (job #1702446) | Cod sursa (job #501098) | Cod sursa (job #1397912) | Cod sursa (job #2271799)
#include<fstream>
#define N 500000
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int vec[N+1];
void merge(int* v,int n){
if (n==1) return ;
//cout<<n<<endl;
merge(v,(n+1)/2);
merge(v+(n+1)/2,n/2);
int aux[N+1];
int a=0,b=(n+1)/2;
for(int i=0;i<n;i++){
if (a<(n+1)/2 && (b==n || v[a]<v[b])){
aux[i]=v[a];
a++;
}
else {
aux[i]=v[b];
b++;
}
}
for(int i=0;i<n;i++)
v[i]=aux[i];
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>vec[i];
merge(vec,n);
for(int i=0;i<n;i++)
cout<<vec[i]<<' ';
cout<<endl;
return 0;
}