Pagini recente » Cod sursa (job #465019) | Cod sursa (job #3280107) | Cod sursa (job #2918965) | Cod sursa (job #862361) | Cod sursa (job #3126296)
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n, a[500005], b[500005];
void mergeSort(int a[], int st, int dr)
{
if (st < dr) {
int mij = (st + dr) / 2;
mergeSort(a, st, mij);
mergeSort(a, mij + 1, dr);
int i = st, j = mij + 1, k = 0;
while (i <= mij && j <= dr) {
if (a[i] < a[j]) {
b[++k] = a[i++];
}
else {
b[++k] = a[j++];
}
}
while (i <= mij) {
b[++k] = a[i++];
}
while (j <= dr) {
b[++k] = a[j++];
}
for (int i = st, j = 1; i <= dr; ++i, ++j) {
a[i] = b[j];
}
}
}
int main()
{
f >> n;
for (int i = 1; i <= n; ++i) {
f >> a[i];
}
mergeSort(a, 1, n);
for (int i = 1; i <= n; ++i) {
g << a[i] << ' ';
}
return 0;
}