Pagini recente » Cod sursa (job #1768346) | Cod sursa (job #1808369) | Cod sursa (job #2370836) | Cod sursa (job #1748997) | Cod sursa (job #1005942)
#include<iostream>
#include<fstream>
void merges(int st, int dr, int k [])
{
if (st == dr)return;
int m = (st + dr) / 2;
merges(st, m, k);
merges(m + 1, dr, k);
int c[50], j = st, i = m + 1, s = 0;
while (j <= m || i <= dr)
{
if (j > m){ c[s++] = k[i++]; continue; }
if (i > dr){ c[s++] = k[j++]; continue; }
if (k[j] > k[i])c[s++] = k[i++];
else c[s++] = k[j++];
}
for (j = st, i = 0; i < s; i++, j++)k[j] = c[i];
}
int main()
{
int a[500000], n;
std::ifstream f("algsort.in");
f >> n;
for (int i = 0; i < n; i++)f >> a[i];
f.close();
merges(0, n - 1, a);
std::ofstream g("algsort.out");
for (int i = 0; i < n; i++)g << a[i] << " ";
g.close();
}