Pagini recente » Cod sursa (job #1322360) | Cod sursa (job #1955724) | Cod sursa (job #570029) | Cod sursa (job #1496802) | Cod sursa (job #1769762)
#include <bits/stdc++.h>
#define NMax 500001
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[NMax],a[NMax];
int nr,i,j,n;
void merge_sort(int st,int dr){
if(st != dr){
merge_sort(st,(st + dr)/2);
merge_sort((st + dr)/2 + 1, dr);
nr = 0;
i = st;
j = (st + dr) / 2 + 1;
while(i <= (st + dr) / 2 && j <= dr){
if(a[i] <= a[j]){
v[++nr] = a[i];
++i;
}else{
v[++nr] = a[j];
++j;
}
}
while(i <= (st + dr) / 2){
v[++nr] = a[i];
++i;
}
while(j <= dr){
v[++nr] = a[j];
++j;
}
for(int k = st; k <= dr; ++k){
a[k] = v[k - st + 1];
}
}
}
int main()
{
f >> n;
// g << 1.0*sizeof(v)*2/1024/1024 << '\n';
for(int i = 1; i <= n; ++i)
f >> a[i];
merge_sort(1,n);
for(int i = 1; i <= n; ++i)
g << a[i] << ' ';
return 0;
}