Pagini recente » Cod sursa (job #2155756) | Cod sursa (job #1661796) | Cod sursa (job #1581485) | Cod sursa (job #1878284) | Cod sursa (job #1816852)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
void _merge_(int v[], int l, int r, int m){
int x=m-l+1, y=r-m;
int i, j, pos=l, a[x], b[y];
for(i=0; i<x; i++)a[i]=v[l+i];
for(j=0; j<y; j++)b[j]=v[m+1+j];
i=0; j=0; pos=l;
while(i<x&&j<y){
if(a[i]<b[j]){
v[pos]=a[i];
i++;
}else{
v[pos]=b[j];
j++;
}
pos++;
}
while(i<x){v[pos]=a[i];i++;pos++;}
while(j<y){v[pos]=b[j];j++;pos++;}
}
void merge_sort(int v[], int l, int r){
if(l<r){
int m=(l+r)/2;
merge_sort(v, l, m);
merge_sort(v, m+1, r);
_merge_(v, l, r, m);
}
}
int main(){
int n, a[500005];
in>>n;
for(int i=0; i<n; i++)in>>a[i];
merge_sort(a, 0, n-1);
for(int i=0; i<n; i++)out<<a[i]<<" ";
return 0;
}