Pagini recente » Cod sursa (job #798496) | Cod sursa (job #2987387) | Cod sursa (job #563238) | Cod sursa (job #3198685) | Cod sursa (job #3217776)
#include <fstream>
using namespace std;
int h[500003];
void merge(int v1[], int v2[], int v3[], int n1, int n2){
int i1=0, i2=0, poz=0;
while(i1<n1&&i2<n2){
if(v1[i1]<v2[i2])
v3[poz++]=v1[i1++];
else
v3[poz++]=v2[i2++];
}
while(i1<n1)
v3[poz++]=v1[i1++];
while(i2<n2)
v3[poz++]=v2[i2++];
}
void merge_sort(int v[], int n){
if(n==1)
return;
int v3[n];
if(n%2==1) {
merge_sort (v,(n+1)/2);
merge_sort (v+((n+1)/2),n/2);
merge(v, v+(n+1)/2, v3, (n+1)/2, n/2);
}
else{
merge_sort (v,n/2);
merge_sort (v+(n/2),n/2);
merge(v, v+(n/2), v3, n/2, n/2);
}
for(int i=0; i<n; i++)
v[i]=v3[i];
}
int main(){
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
fin>>n;
for(int i=0;i<n;i++)
fin>>h[i];
merge_sort(h,n);
for(int i=0;i<n;i++)
fout<<h[i]<<" ";
return 0;
}