Pagini recente » Cod sursa (job #680507) | Cod sursa (job #143000) | Cod sursa (job #2772713) | Cod sursa (job #2568173) | Cod sursa (job #1450102)
#include<fstream>
using namespace std;
#define MAX 500001
unsigned int v[MAX],x[MAX];
void interclasare(unsigned int x[],int sx,int fx,int sy,int fy)
{
int i=sx,j=sy,k=0;
while(i<=fx && j<=fy)
{
if(x[i]<=x[j])
{
v[++k]=x[i];
++i;
}
else
{
v[++k]=x[j];
++j;
}
}
if(i>fx)
for(int t=j;t<=fy;++t)
v[++k]=x[t];
if(j>fy)
for(int t=i;t<=fx;++t)
v[++k]=x[t];
for(int i=1;i<=k;i++)
x[sx+i-1]=v[i];
}
void mergesort(unsigned int x[],int s,int f)
{
if(s!=f)
{
mergesort(x,s,(s+f)/2);
mergesort(x,(s+f)/2+1,f);
interclasare(x,s,(s+f)/2,(s+f)/2+1,f);
}
}
int main()
{
ifstream in("algsort.in");
ofstream out("algsort.out");
int n;
in>>n;
for(int i=1;i<=n;i++)
in>>x[i];
mergesort(x,1,n);
for(int i=1;i<=n;i++)
out<<x[i]<<" ";
return 0;
}