Pagini recente » Cod sursa (job #2263927) | Cod sursa (job #1012109) | Cod sursa (job #490658) | Cod sursa (job #2338538) | Cod sursa (job #1251185)
#include <fstream>
#define maxn 500010
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int n,v[maxn],temp[maxn];
void mergesort (int p, int q)
{
if (p == q)
return;
int mid = (p+q)/2;
mergesort (p,mid);
mergesort (mid+1,q);
int i = p, j = mid+1, t = 0;
while (i <= mid && j <= q)
{
if (v[i] <= v[j])
{
temp[++t] = v[i];
++i;
}
else
{
temp[++t] = v[j];
++j;
}
}
if (i == mid+1)
{
for (; j <= q; ++j)
temp[++t] = v[j];
}
else
{
for (; i <= mid; ++i)
temp[++t] = v[i];
}
for (int i=p; i<=q; ++i)
{
v[i] = temp[i-p+1];
}
}
int main()
{
fin>>n;
for (int i=1; i<=n; ++i)
fin>>v[i];
mergesort (1,n);
for (int i=1; i<=n; ++i)
fout<<v[i]<<" ";
}