Pagini recente » Diferente pentru utilizator/crusher intre reviziile 2 si 3 | Cod sursa (job #912402)
Cod sursa(job #912402)
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,i,x[500010];
void interclasare(int p,int mij,int u)
{
int i=p;
int j=mij+1;
int k=0;
int y[500010];
while(i<=mij && j<=u)
{
if(x[i]<x[j])
y[++k]=x[i++];
else
y[++k]=x[j++];
}
for(;i<=mij;i++)
y[++k]=x[i];
for(;j<=u;j++)
y[++k]=x[j];
for(i=1;i<=k;i++)
x[p+i-1]=y[i];
}
int sortare(int p,int u)
{
if(u-p>=1)
{
int mij=(p+u)/2;
sortare(p,mij);
sortare(mij+1,u);
interclasare(p,mij,u);
}
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>x[i];
sortare(1,n);
for(i=1;i<=n;i++)
g<<x[i]<<' ';
return 0;
}