Pagini recente » Cod sursa (job #690628) | Cod sursa (job #1726494) | Cod sursa (job #2350008) | Cod sursa (job #1080895) | Cod sursa (job #1849129)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int a[500005],n,x[500005];
void interclasez(int a[],int n,int b[],int m,int c[])
{
int i,j,k=0;
i=j=1;
while(i<=n&&j<=m)
{
if(a[i]<=b[j])
{
c[++k]=a[i];
i++;
}
else
{
c[++k]=b[j];
j++;
}
}
while(i<=n)
c[++k]=a[i++];
while(j<=m)
c[++k]=b[j++];
}
void mergeSort(int v[],int li,int lf)
{
if(li==lf)
return;
int *a1,*a2;
int n=(lf-li)+1;
a1=v;
a2=v+n/2;
mergeSort(a1,li,li+n/2-1);
mergeSort(a2,li+n/2,lf);
interclasez(a1,n/2,a2,n-n/2,x);
for(int i=1;i<=n;i++)
v[i]=x[i];
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>a[i];
mergeSort(a,1,n);
for(int i=1;i<=n;i++)
fout<<a[i]<<" ";
return 0;
}