Pagini recente » Cod sursa (job #828060) | Cod sursa (job #3176553) | Cod sursa (job #624810) | Cod sursa (job #3257805) | Cod sursa (job #2622582)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int NMAX = 500001;
int v[NMAX], n;
void interclasare(int v[], int p, int u, int m)
{
int a[NMAX];
int i = p, j = m + 1, k = 1;
while(i <= m && j <= u)
if(v[i] <= v[j])
a[k++] = v[i++];
else
a[k++] = v[j++];
while(i <= m) a[k++] = v[i++];
while(j <= u) a[k++] = v[j++];
for(i = p, k = 1; i <= u; i++, k++)
v[i] = a[k];
}
void merge_sort(int v[], int p, int u)
{
if(p < u)
{
int m = (p + u)/2;
merge_sort(v, p, m);
merge_sort(v, m + 1, u);
interclasare(v, p, u, m);
}
}
int main()
{
f >> n;
for(int i = 1; i <= n; i++)
f >> v[i];
merge_sort(v, 1, n);
for(int i = 1; i <= n; i++)
g << v[i] << ' ';
return 0;
}