Pagini recente » Cod sursa (job #2743642) | Cod sursa (job #2744977) | Cod sursa (job #709769) | Cod sursa (job #1172821) | Cod sursa (job #1250139)
#include <fstream>
#include<iostream>
using namespace std;
long int v[500001], w[500001];
int N;
void citire()
{
fstream f("algsort.in");
f>>N;
int i;
for (i=1;i<=N;i++)
f>>v[i];
}
void mergesort(int st, int dr)
{
if (st<dr)
{
int i, j, k, mijl=(st+dr)/2;
mergesort(st, mijl);
mergesort(mijl+1, dr);
i = st, j = mijl + 1;
k = st;
while (i <= mijl && j <= dr)
{
if (v[i] < v[j])
w[k++] = v[i++];
else
w[k++] = v[j++];
}
while (i <= mijl)
w[k++] = v[i++];
while (j <= dr)
w[k++] = v[j++];
for (k = st; k <= dr; k++)
v[k] = w[k];
}
}
void afisare()
{
ofstream g("algsort.out");
for (int i=1;i<=N;i++)
g<<v[i]<<' ';
g<<'\n';
g.close();
}
int main()
{
citire();
mergesort(1, N);
afisare();
}