Pagini recente » Cod sursa (job #3152141) | Cod sursa (job #1961072) | Cod sursa (job #1115950) | Cod sursa (job #1105345) | Cod sursa (job #1337294)
#include<iostream>
#include<fstream>
using namespace std;
unsigned int x[500002],z[500002],n;
ifstream in("algsort.in");
ofstream out("algsort.out");
void interclasare(unsigned int x[],int s1,int e1,int s2,int e2)
{
int i=s1,j=s2;
int nz=1;
while(i<=e1 && j<=e2)
{
if(x[i]<x[j])
{
z[nz++]=x[i];
++i;
}
else
{
z[nz++]=x[j];
++j;
}
}
if(i>e1)
for(int k=j;k<=e2;k++)
{
z[nz++]=x[k];
}
if(j>e2)
for(int k=i;k<=e1;k++)
{
z[nz++]=x[k];
}
for(int i=s1,j=1;i<=e2;i++,j++)
x[i]=z[j];
}
void mergesort(unsigned int x[],int s,int e)
{
if(s<e)
{
mergesort(x,s,(e+s)/2);
mergesort(x,(e+s)/2 +1,e);
interclasare(x,s,(e+s)/2,(e+s)/2 +1,e);
}
}
int main()
{
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]<<" ";
in.close();
out.close();
return 0;
}