Pagini recente » Cod sursa (job #911002) | Cod sursa (job #2878600) | Cod sursa (job #1087638) | Cod sursa (job #2398462) | Cod sursa (job #1182420)
#include <fstream >
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int a[500100],n;
void merge(int left,int right)
{
int i=left,j=right,m=(i+j)/2,b[j-i+1],c[j-i+1];
if (m-left>0) merge(left,m);
if (right-m>1) merge(m+1,right);
int k(0),k1(0),k2(0);
for (;i<=right;i++)
if (i<=m) b[++k1]=a[i];
else c[++k2]=a[i];
k=left-1;
i=j=1;
while (i<=k1 && j<=k2)
if (b[i]<c[j]) a[++k]=b[i++];
else a[++k]=c[j++];
while (i<=k1) a[++k]=b[i++];
while (j<=k2) a[++k]=c[j++];
}
int main ()
{
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i];
merge(1,n);
for (int i=1;i<=n;i++) cout<<a[i]<<" ";
cin.close();
cout.close();
}