Pagini recente » Cod sursa (job #349147) | Cod sursa (job #683472) | Cod sursa (job #2032674) | Cod sursa (job #1613760) | Cod sursa (job #2859718)
#include <fstream>
using namespace std;
long long v[500005];
void interc(long long x[],int a,int mid,int b)
{
long long v[b-a+1];
int sz=1,c1=a,c2=mid+1;
while (c1<=mid && c2<=b)
{
if (x[c1]<x[c2])
{
v[sz]=x[c1];
c1++;
}
else
{
v[sz]=x[c2];
c2++;
}
sz++;
}
if (c1==mid+1)
for (int i=c2; i<=b; i++)
{
v[sz]=x[i];
sz++;
}
else
for (int i=c1; i<=mid; i++)
{
v[sz]=x[i];
sz++;
}
for (int i=a;i<=b;i++) x[i]=v[i-a+1];
}
void merges(long long x[],int a,int b)
{
if (b-a<=1)
{
if (x[a]>x[b])
swap(x[a],x[b]);
return;
}
int mid=(a+b)/2;
merges(x,a,mid);
merges(x,mid+1,b);
interc(x,a,mid,b);
}
int n;
int main()
{
ifstream f ("algsort.in");
ofstream g ("algsort.out");
f>>n;
for (int i=1; i<=n; i++)
f>>v[i];
merges(v,1,n);
for (int i=1; i<=n; i++)
g<<v[i]<<' ';
}