Pagini recente » Cod sursa (job #986492) | Cod sursa (job #977893) | Istoria paginii runda/joi_25/clasament | Cod sursa (job #2308133) | Cod sursa (job #2063984)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, i, j, v[500000], r[500000];
void merge (int a, int b, int a2, int b2)
{
int i = a;
int j = a2;
int in = a;
while (i <= b && j <= b2)
{
if (v[i] <= v[j])
{ r[in] = v[i]; i++; in++; }
else
{ r[in] = v[j]; j++; in++; }
}
while (i <= b)
{ r[in] = v[i]; in++; i++; }
while (j <= b2)
{ r[in] = v[j]; in++; j++; }
}
void mergesort(int in, int sf)
{
if (sf > in)
{
int mid = in+(sf-in)/2;
mergesort(in, mid);
mergesort(mid+1, sf);
merge (in, mid, mid+1, sf);
for (int i = in; i <= sf; i++)
v[i] = r[i];
}
}
int main () {
fin >> n;
for (i = 1; i <= n; i++)
fin >> v[i];
mergesort(1, n);
for (i = 1; i <= n; i++)
fout << r[i] << " "; cout << "\n";
}