Pagini recente » Cod sursa (job #2338417) | Cod sursa (job #949059) | Cod sursa (job #1824921) | Cod sursa (job #2328857) | Cod sursa (job #793875)
Cod sursa(job #793875)
#include <fstream>
#define N_MAX 500000
int N;
int v[N_MAX], vAux[N_MAX];
template<typename T>
inline void swap(T& x, T& y) {
T z = x;
x = y;
y = z;
}
inline void read() {
std::ifstream fin("algsort.in");
fin >> N;
for (int i = 0; i < N; ++i) {
fin >> v[i];
}
fin.close();
}
void mergesort(int begin, int end) {
if (begin + 1 == end) {
return;
}
int mid = (begin + end) / 2;
mergesort(begin, mid);
mergesort(mid, end);
int i = begin, j = mid, k = begin;
while (i < mid && j < end) {
if (v[i] < v[j]) {
vAux[k++] = v[i++];
} else {
vAux[k++] = v[j++];
}
}
while (i < mid) {
vAux[k++] = v[i++];
}
while (j < end) {
vAux[k++] = v[j++];
}
for (i = begin; i < end; ++i) {
v[i] = vAux[i];
}
}
inline void print() {
std::ofstream fout("algsort.out");
fout << v[0];
for (int i = 1; i < N; ++i) {
fout << ' ' << v[i];
}
fout << '\n';
fout.close();
}
int main() {
read();
mergesort(0, N);
print();
return 0;
}