Pagini recente » Profil FlorinSalamOficial | Cod sursa (job #1144806) | Cod sursa (job #1301255) | Cod sursa (job #214765) | Cod sursa (job #3129064)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,v[500001];
void merger(int st, int mij, int dr)
{int na=mij-st+1,nb=dr-mij;
int a[na+1],b[nb+1];
for (int i=0;i<na;i++)
a[i]=v[i+st];
for (int i=0;i<nb;i++)
b[i]=v[i+mij+1];
int i=0,j=0,k=st;
while (i<na && j<nb)
{
if (a[i]<=b[j])
{
v[k]=a[i];
i++;
}
else
{
v[k]=b[j];
j++;
}
k++;
}
while (i<na)
{
v[k]=a[i];
k++;
i++;
}
while (j<nb)
{
v[k]=b[j];
k++;
j++;
}
}
void mergesort(int st, int dr)
{
if (st>=dr)
return;
int mij=(dr+st)/2;
mergesort(st,mij);
mergesort(mij+1,dr);
merger(st,mij,dr);
}
int main()
{int i;
f>>n;
for (i=0;i<n;i++)
f>>v[i];
mergesort(0,n-1);
for (i=0;i<n;i++)
g<<v[i]<<' ';
}