Pagini recente » Cod sursa (job #783864) | test122 | Cod sursa (job #2130169) | Cod sursa (job #1158021) | Cod sursa (job #1801543)
#include <fstream>
#define nMax 500007
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int v1[nMax], v2[nMax], n;
void mergeSort(int st, int dr)
{
if(st >= dr)
return;
int mid = (st + dr) / 2;
mergeSort(st, mid);
mergeSort(mid + 1, dr);
int nr = 0;
for(int i = st, j = mid + 1; i <= mid || j <= dr; )
{
if(i <= mid && j <= dr)
{
if(v1[i] < v1[j])
{
v2[++nr] = v1[i++];
}
else
{
v2[++nr] = v1[j++];
}
}
else if(i <= mid)
{
v2[++nr] = v1[i++];
}
else
{
v2[++nr] = v1[j++];
}
}
for(int i = 1; i <= nr; ++i)
{
v1[st + i - 1] = v2[i];
}
}
int main()
{
in >> n;
for(int i = 1; i <= n; ++i)
{
in >> v1[i];
}
mergeSort(1, n);
for(int i = 1; i <= n; ++i)
out << v1[i] << " ";
}