Pagini recente » Borderou de evaluare (job #2812559) | Borderou de evaluare (job #2553190) | Borderou de evaluare (job #2576144) | Borderou de evaluare (job #2563475) | Cod sursa (job #864923)
Cod sursa(job #864923)
#include<fstream>
using namespace std;
int a[400000],b[400000],N;
void merge(int st1, int dr1,int st2, int dr2)
{
int x=st1;
int z=st1;
int y=st2;
while((x<=dr1)&&(y<=dr2))
{
if(a[x]<=a[y])
{
b[z]=a[x];
++x;
++z;
}
else
{
b[z]=a[y];
++y;
++z;
}
}
for(int i=x;i<=dr1;++i)
{
b[z]=a[i];
++z;
}
for(int i=y;i<=dr2;++i)
{
b[z]=a[i];
++z;
}
for(int i=st1;i<=dr1;++i) a[i]=b[i];
for(int i=st2;i<=dr2;++i) a[i]=b[i];
}
void sort(int st, int dr)
{
if(dr-st==0)
return;
int mij=(st+dr)/2;
sort(st,mij);
sort(mij+1,dr);
merge(st,mij,mij+1,dr);
}
int main()
{
fstream cin("algsort.in");
fstream cout("algsort.out");
cin>>N;
for(int i=1;i<=N;++i)
cin>>a[i];
sort(1,N);
for(int i=1;i<=N;++i)
cout<<a[i]<<" ";
return 0;
}