Pagini recente » Cod sursa (job #792185) | Cod sursa (job #2254779) | Cod sursa (job #1125147) | Cod sursa (job #2712814) | Cod sursa (job #1292121)
#include <fstream>
#define MAXN 500005
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int aux[MAXN], i1, i2, i, mid;
void merge_sort(int v[], int left, int right){
if(left == right)
return;
merge_sort(v, left, (left + right) >> 1);
merge_sort(v, ((left + right) >> 1) + 1, right);
mid = (left + right) >> 1;
i1 = left; i2 = mid + 1;
for(i = left; i <= right; i++){
if(i2 > right || (i1 <= mid && v[i1] < v[i2]))
aux[i] = v[i1++];
else
aux[i] = v[i2++];
}
for(i = left; i <= right; i++)
v[i] = aux[i];
}
int main(){
int n, v[MAXN], i;
f >> n;
for(i = 1; i <= n; i++)
f >> v[i];
merge_sort(v, 1, n);
for(i = 1; i <= n; i++)
g << v[i] << ' ';
f.close();
g.close();
return 0;
}