Pagini recente » Cod sursa (job #1059747) | Cod sursa (job #1996108) | Cod sursa (job #2570463) | Cod sursa (job #1512350) | Cod sursa (job #2897313)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int maxn = 500005;
int aux[maxn];
int v[maxn];
void mergesort(int st, int dr)
{
if(st >= dr)
return;
int mij = (st + dr) / 2;
mergesort(st, mij);
mergesort(mij + 1, dr);
int i1 = st;
int i2 = mij + 1;
int poz = 0;
while(i1 <= mij && i2 <= dr)
{
if(v[i1] < v[i2])
aux[++poz] = v[i1++];
else
aux[++poz] = v[i2++];
}
while(i1 <= mij)
aux[++poz] = v[i1++];
while(i2 <= dr)
aux[++poz] = v[i2++];
for(int i = 0; i < poz; i++)
v[i + st] = aux[i + 1];
return;
}
int main()
{
int n;
in >> n;
for(int i = 1; i <= n; i++)
in >> v[i];
mergesort(1, n);
for(int i = 1; i <= n; i++)
out << v[i] << " ";
return 0;
}