Pagini recente » Cod sursa (job #623021) | Cod sursa (job #3207148) | Cod sursa (job #1105677) | Cod sursa (job #2091075) | Cod sursa (job #2864323)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
const int NMAX=5e5+1;
int v[NMAX],aux[NMAX];
void interclasare(int left1,int right1,int left2, int right2)
{
int i=left1,j=left2,k=left1-1;
while(i<=right1 and j<=right2)
{
if(v[i]<v[j])
{
k++;
aux[k]=v[i];
i++;
}
else if(v[i]>=v[j])
{
k++;
aux[k]=v[j];
j++;
}
}
while(i<=right1)
{
k++;
aux[k]=v[i];
i++;
}
while(j<=right2)
{
k++;
aux[k]=v[j];
j++;
}
for(int j=left1;j<=k;j++)
{
v[j]=aux[j];
}
}
void mergesort(int left, int right)
{
if(left==right)
return;
int med=(left+right)>>1;
mergesort(left,med);
mergesort(med+1,right);
interclasare(left,med,med+1,right);
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>v[i];
}
mergesort(1,n);
for(int i=1;i<=n;i++)
{
cout<<v[i]<<" ";
}
return 0;
}