Pagini recente » Cod sursa (job #250447) | Cod sursa (job #2601216) | Cod sursa (job #2640072) | Cod sursa (job #154226) | Cod sursa (job #2870997)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
const string filename = "algsort";
ifstream fin(filename + ".in");
ofstream fout(filename + ".out");
const int maxN = 500000;
int n, v[maxN + 5], h[maxN + 5];
void mergesort(int st, int dr)
{
if(st == dr)
return;
int med = (st + dr) / 2;
mergesort(1, med);
mergesort(med + 1, dr);
int i = st, j = med + 1, k = st;
while(i <= med || j <= dr)
{
if(j > dr || (i <= med && v[i] < v[j]))
h[k++] = v[i++];
else
h[k++] = v[j++];
}
for(i = st; i <= dr; i++)
v[i] = h[i];
}
int main()
{
fin >> n;
for(int i = 1; i <= n; i++)
fin >> v[i];
mergesort(1, n);
for(int i = 1; i <= n; i++)
fout << v[i] << ' ';
}