Pagini recente » Cod sursa (job #2139400) | Cod sursa (job #2384996) | Cod sursa (job #412667) | Cod sursa (job #2060181) | Cod sursa (job #1073308)
#include <fstream>
using namespace std;
const int N = 5e6;
int v[N], aux[N], n;
ifstream in("algsort.in");
ofstream out("algsort.out");
void mergeSort(int v[], int n){
int dr, m;
for (int step = 2 ; step < (n << 1) ; step <<= 1)
for (int st = 0 ; st < n ; st += step){
dr = min(st + step, n);
m = st + (step >> 1);
if (dr <= m)
continue;
for (int i = st, j = m, k = st ; k < dr ; k++)
if (dr <= j || (i < m && v[i] < v[j]))
aux[k] = v[i++];
else
aux[k] = v[j++];
for (int i = st ; i < dr ; i++)
v[i] = aux[i];
}
}
int main(){
in >> n;
for (int i = 0 ; i < n ; i++)
in >> v[i];
mergeSort(v, n);
for (int i = 0 ; i < n ; i++)
out << v[i] << " ";
out << "\n";
return 0;
}