Pagini recente » Cod sursa (job #1556846) | Cod sursa (job #2600540) | Cod sursa (job #2434898) | Cod sursa (job #431119) | Cod sursa (job #1010640)
#include<fstream>
using namespace std;
ifstream f ("algsort.in");
ofstream g("algsort.out");
int n,v[500001],i,j;
void merge(int st,int x, int dr)
{
int i=st, j=x+1, aux[500001];
int k=0;
while (i<=x && j<=dr)
{
if (v[i]<v[j])
{
aux[++k]=v[i];
i++;
}
else
{
aux[++k]=v[j];
j++;
}
}
while (i<=x)
{
aux[++k]=v[i];
i++;
}
while (j<=dr)
{
aux[++k]=v[j];
j++;
}
k=0;
for (i=st;i<=dr;i++)
v[i]=aux[++k];
}
void swap (int a, int b)
{
if (v[a]>v[b])
{
int aux=v[a];
v[a]=v[b];
v[b]=aux;
}
}
void merges(int s,int d)
{
int x;
if ((d-s)<1) swap(s,d);
else
{
x=(s+d)/2;
merges(s,x);
merges(x+1,d);
merge(s,x,d);
}
}
int main ()
{
f>>n;
for (i=1;i<=n;i++)
f>>v[i];
merges(1,n);
for (i=1;i<=n;i++)
g<<v[i]<<" ";
return 0;
}