Pagini recente » Cod sursa (job #1852228) | Cod sursa (job #1170170) | Cod sursa (job #440177) | Cod sursa (job #990423) | Cod sursa (job #1985216)
#include <iostream>
#include <fstream>
using namespace std;
const int nMax = 500005;
int n;
int v[nMax];
void citire()
{
ifstream in("algsort.in");
in >> n;
for(int i = 1; i <= n; ++i)
in >> v[i];
in.close();
}
void merge_sort(int st, int dr)
{
static int a[nMax];
if(st == dr)
return;
int mid = (st + dr) / 2;
merge_sort(st, mid);
merge_sort(mid + 1, dr);
for(int i = st; i <= dr; ++i)
a[i] = v[i];
int ind1 = st;
int ind2 = mid + 1;
int i;
for(i = st; i <= dr && ind1 <= mid && ind2 <= dr; ++i)
{
if(a[ind1] < a[ind2])
v[i] = a[ind1++];
else
v[i] = a[ind2++];
}
while(ind1 <= mid)
v[i++] = a[ind1++];
while(ind2 <= dr)
v[i++] = a[ind2++];
}
void afisare()
{
ofstream out("algsort.out");
for(int i = 1; i <= n; ++i)
out << v[i] << " ";
out.close();
}
int main()
{
citire();
merge_sort(1, n);
afisare();
return 0;
}