Pagini recente » Monitorul de evaluare | Cod sursa (job #861251) | Cod sursa (job #1037388) | Cod sursa (job #885831) | Cod sursa (job #1462632)
#include <iostream>
#include <fstream>
#define nmax 500001
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int a[nmax],n;
void Interclasare(int s,int m,int f)
{
int i=s,j=m+1,k=0;
int b[nmax];
while (i<=m && j<=f)
if (a[i]<a[j]) b[k++]=a[i++];
else b[k++]=a[j++];
while (i<=m) b[k++]=a[i++];
while (j<=f) b[k++]=a[j++];
for (i=s; i<=f; i++) a[i]=b[i-s];
}
void Msort(int s,int f)
{
if (f>s)
{
int m=(s+f)/2;
Msort(s,m);
Msort(m+1,f);
Interclasare(s,m,f);
}
}
void citire()
{
fin>>n;
for (int i=0;i<n;i++) fin>>a[i];
fin.close();
}
void afisare()
{
for (int i=0;i<n;i++) fout<<a[i]<<' ';
fout.close();
}
int main()
{
citire();
Msort(0,n-1);
afisare();
return 0;
}