Pagini recente » Cod sursa (job #465979) | Cod sursa (job #1516830) | Cod sursa (job #373984) | Cod sursa (job #266774) | Cod sursa (job #2052129)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,a[500001],b[500001];
void Merge(int st,int m,int dr)
{ int i=st;
int j=m+1;
int z=0;
while(i<=m&&j<=dr)
{ if(a[i]<a[j])
{ z++;
b[z]=a[i];
i++;
}
else
{ z++;
b[z]=a[j];
j++;
}
}
if(i<=m)
{ while(i<=m)
{ z++;b[z]=a[i];i++; }
}
if(j<=dr)
{ while(j<=dr)
{ z++;b[z]=a[j];j++; }
}
for(i=1;i<=z;i++)
a[st+i-1]=b[i];
}
void MergeSort(int x,int y)
{ if(x<y)
{ int mij=(x+y)/2;
MergeSort(x,mij);
MergeSort(mij+1,y);
Merge(x,mij,y);
}
}
int main()
{ fin>>n;
int i;
for(i=1;i<=n;i++)
fin>>a[i];
MergeSort(1,n);
for(i=1;i<=n;i++)
fout<<a[i]<<" ";
return 0;
}