Pagini recente » Cod sursa (job #2624528) | Cod sursa (job #176522) | Cod sursa (job #424284) | Cod sursa (job #1906352) | Cod sursa (job #1414973)
#include <iostream>
#include <fstream>
using namespace std;
int a[500005],c[500005],n;
void interclasare(int a[],int sta,int dra,int b[],int stb,int drb, int c[])
{
int k=-1,i=sta,j=stb;
while(i<=dra&&j<=drb)
{
if(a[i]<b[j])
{
k++;
c[k]=a[i];
i++;
}
else
{
k++;
c[k]=b[j];
j++;
}
}
while(i<=dra)
{
k++;
c[k]=a[i];
i++;
}
while(j<=drb)
{
k++;
c[k]=b[j];
j++;
}
}
void mergesort(int a[],int st,int dr)
{
if(st>=dr)
return;
int mij=(st+dr)/2;
mergesort(a,st,mij);
mergesort(a,mij+1,dr);
interclasare(a,st,mij,a,mij+1,dr,c);
int i,j=st;
for(i=0;i<dr-st+1;i++)
{
a[j]=c[i];
j++;
}
}
int main()
{
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int i;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
mergesort(a,1,n);
for(i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}