Pagini recente » Cod sursa (job #1993353) | Cod sursa (job #114545) | Cod sursa (job #940031) | Cod sursa (job #1140714) | Cod sursa (job #652168)
Cod sursa(job #652168)
#include <fstream>
using namespace std;
int v[500100], i, j, x[500100];
void merge (int l1, int l2)
{
int jumate = (l1 + l2) >> 1, limita1 = l1, limita2 = jumate + 1, s = l1 - 1;
if (l1 >= l2) return;
merge (l1, jumate);
merge (limita2, l2);
while ((limita1 <= jumate) && (limita2 <= l2))
{
if (v[limita1] < v[limita2])
{
x[++s] = v[limita1];
limita1++;
}
else
{
x[++s] = v[limita2];
limita2++;
}
}
for (i = limita1; i <= jumate; i++)
{
x[++s] = v[i];
}
for (i = limita2; i <= l2; i++)
{
x[++s] = v[i];
}
for (i = l1; i <= l2; i++)
{
v[i] = x[i];
}
}
int main ()
{
int lungime;
ifstream fin;
fin.open ("algsort.in");
fin >> lungime;
for (i = 0; i < lungime; i++)
{
fin >> v[i];
}
fin.close ();
merge (0, lungime - 1);
ofstream fout;
fout.open ("algsort.out");
for (i = 0; i < lungime; i++)
{
fout << v[i] << " ";
}
fout.close ();
return 0;
}