Pagini recente » Cod sursa (job #529518) | Cod sursa (job #177696) | Cod sursa (job #3148520) | Cod sursa (job #2415706) | Cod sursa (job #2753299)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
vector<int> numerele_initiale, final;
int32_t n;
void interclasare(int32_t st, int32_t dr, int32_t med)
{
int32_t i = st, j = med + 1;
while (i <= med && j <= dr)
{
if (numerele_initiale[i] < numerele_initiale[j])
{
final.push_back(numerele_initiale[i++]);
}
else
{
final.push_back(numerele_initiale[j++]);
}
}
while (i <= med)
{
final.push_back(numerele_initiale[i++]);
}
while (j <= dr)
{
final.push_back(numerele_initiale[j++]);
}
for (i = st, j = 0; i <= dr; i++, j++)
numerele_initiale[i] = final[j];
final.clear();
}
void mergesort(int32_t st, int32_t dr)
{
if (st < dr)
{
int med = (st + dr) / 2;
mergesort(st, med);
mergesort(med + 1, dr);
interclasare(st, dr, med);
}
}
int main()
{
fin >> n;
for (int i = 0; i < n; i++)
{
int32_t numar;
fin >> numar;
numerele_initiale.push_back(numar);
}
mergesort(0, n - 1);
for (int i = 0; i < numerele_initiale.size(); i++)
fout << numerele_initiale[i] << " ";
fout << "\n";
return 0;
}