Pagini recente » Cod sursa (job #2813410) | Cod sursa (job #86123) | Clasamentul arhivei ACM | Cod sursa (job #1219724) | Cod sursa (job #2330996)
#include <bits/stdc++.h>
#define N 500005
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,a[N];
void Read()
{
fin>>n;
for(int i=1;i<=n;i++) fin>>a[i];
fin.close();
}
void Interclasare(int s,int m,int d);
void MSort(int s,int d)
{
if(s<d)
{
int m=(s+d)/2;
MSort(s,m);
MSort(m+1,d);
Interclasare(s,m,d);
}
}
void Interclasare(int s,int m,int d)
{ int b[N],k=0;
int i=s, j=m+1;
while(i<=m && j<=d )
if(a[i]<a[j])
{b[++k]=a[i]; i++;}
else {b[++k]=a[j]; j++;}
while(i<=m)
{ b[++k]=a[i]; i++;}
while(j<=d)
{ b[++k]=a[j]; j++;}
for(int i=1,j=s;j<=d;i++,j++)
a[j]=b[i];
}
void Write()
{
for(int i=1;i<=n;i++) fout<<a[i]<<" ";
fout.close();
}
int main()
{ Read();
MSort(1,n);
Write();
return 0;
}