Pagini recente » Cod sursa (job #635819) | Cod sursa (job #884825) | Cod sursa (job #142074) | Cod sursa (job #2399150) | Cod sursa (job #2955414)
#include <fstream>
using namespace std;
#define NMAX 500000
int v[NMAX], h[NMAX];
void Merge(int st, int mid, int dr)
{
int i = st, j = mid + 1, poz = 0;
while (i <= mid && j <= dr)
{
if (v[i] < v[j])
{
h[poz++] = v[i];
i++;
}
else
{
h[poz++] = v[j];
j++;
}
}
while (i <= mid)
{
h[poz++] = v[i];
i++;
}
while (j <= dr)
{
h[poz++] = v[j];
j++;
}
for (i = 0; i < poz; i++)
{
v[i + st] = h[i];
h[i] = 0;
}
}
void MergeSort(int st, int dr)
{
if (st == dr)
return;
int mij = (st + dr) / 2;
MergeSort(st, mij);
MergeSort(mij + 1, dr);
Merge(st, mij, dr);
}
int main()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
fin >> n;
for (int i = 0; i < n; i++)
fin >> v[i];
MergeSort(0, n - 1);
for (int i = 0; i < n; i++)
fout << v[i] << " ";
}