Pagini recente » Cod sursa (job #1761483) | Cod sursa (job #2017417) | Cod sursa (job #844891) | Cod sursa (job #1776949) | Cod sursa (job #2553578)
#define MAX_N 500000
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, A[MAX_N + 1];
void MergeSort(int st, int dr);
int main()
{
fin >> n;
for (int i = 1; i <= n; ++i)
{
fin >> A[i];
}
MergeSort(1, n);
for (int i = 1; i <= n; ++i)
{
fout << A[i] << ' ';
}
fin.close();
fout.close();
return 0;
}
int B[MAX_N + 1];
void MergeSort(int st, int dr)
{
if (st == dr) { return; }
int mij = (st + dr) / 2;
MergeSort(st, mij);
MergeSort(mij + 1, dr);
int i = st, j = mij + 1, p = 0;
while ((i <= mij) && (j <= dr))
{
if (A[i] < A[j])
{
B[++p] = A[i++];
}
else
{
B[++p] = A[j++];
}
}
while (i <= mij)
{
B[++p] = A[i++];
}
while (j <= dr)
{
B[++p] = A[j++];
}
for (int i = st; i <= dr; ++i)
{
A[i] = B[i - st + 1];
}
}