Pagini recente » Cod sursa (job #2900599) | Cod sursa (job #2952640) | Cod sursa (job #1871364)
#include <fstream>
#include <cstdio>
#define Nmax 500001
using namespace std;
ofstream g("algsort.out");
int v[Nmax],n,aux[Nmax];
void _sort(int st,int dr)
{
int mid = (st+dr)/2;
if (dr==st+1)
{
int aux = max(v[dr],v[st]);
v[st] = min(v[dr],v[st]);
v[dr] = aux;
return;
}
else if (dr==st)
return;
_sort(st,mid);
_sort(mid+1,dr);
int lg=0,a = st,b = mid+1;
while (a<=mid || b<=dr)
{
if (a<=mid && (b==dr+1 || v[a]<v[b]))
{
aux[++lg] = v[a];
a++;
}
else
{
aux[++lg] = v[b];
b++;
}
}
for (int i=st;i<=dr;i++)
v[i] = aux[i-st+1];
}
int main()
{
freopen("algsort.in","r",stdin);
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%d",&v[i]);
}
_sort(1,n);
for (int i=1;i<=n;i++)
g<<v[i]<<' ';
return 0;
}