Pagini recente » Cod sursa (job #2780290) | Cod sursa (job #1969176) | Cod sursa (job #225669) | Cod sursa (job #716127) | Cod sursa (job #2269493)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int x[500001], nrinv, n;
void citire()
{
int i;
f >> n;
for(i = 1; i <=n; ++i)
{
f >> x[i];
}
}
void interclaseaza(int st, int mij, int dr)
{
int i, j, k = 0, y[500001];;
i = st;
j = mij + 1;
while (i <= mij && j <= dr)
{
if (x[i] <= x[j])
{
k++;
y[k] = x[i];
i++;
}
else
{
k++;
y[k] = x[j];
j++;
}
}
while (i <= mij)
{
k++;
y[k] = x[i];
++i;
}
while (j <= dr)
{
k++;
y[k] = x[j];
++j;
}
k=1;
for (i = st; i <= dr; ++i)
{
x[i] = y[k];
k++;
}
}
void MergeSort(int st, int dr)
{
if(st < dr)
{
int mij = (st + dr) / 2;
MergeSort(st, mij);
MergeSort(mij + 1, dr);
interclaseaza(st, mij, dr);
}
}
int main()
{ int i;
citire();
MergeSort(1, n);
for(i = 1; i <= n; i++)
g << x[i] << " ";
return 0;
}