Pagini recente » Cod sursa (job #1540915) | Cod sursa (job #1978321) | Cod sursa (job #2245549) | Cod sursa (job #2169035) | Cod sursa (job #1470653)
#include <iostream>
#include <fstream>
#define Nmax 500000
using namespace std;
int v[Nmax], n;
void Interclas(int ls, int ld, int m) {
int i, j, k, a[Nmax];
i = ls;
j = m+1;
k = 0;
while (i <= m && j <= ld){
if (v[i] < v[j]) {
a[k] = v[i];
i++;
} else {
a[k] = v[j];
j++;
}
k++;
}
while (i <= m){
a[k] = v[i];
i++;
k++;
}
while (j <= ld){
a[k] = v[j];
j++;
k++;
}
k = 0;
for (i = ls; i <= ld; ++i){
v[i] = a[k];
k++;
}
}
void MergeS(int ls, int ld) {
if (ld - ls <= 1){
if (v[ld] < v[ls])
swap(v[ld], v[ls]);
}
else {
int m = (ls + ld) / 2;
MergeS(ls, m);
MergeS(m + 1, ld);
Interclas(ls, ld, m);
}
}
int main() {
ifstream f("algsort.in");
ofstream g("algsort.out");
int i;
f >> n;
for (i = 0; i < n; ++i)
f >> v[i];
MergeS(0, n - 1);
for (i = 0; i < n; ++i)
g << v[i]<<" ";
f.close();
g.close();
return 0;
}