Mai intai trebuie sa te autentifici.
Cod sursa(job #1492270)
Utilizator | Data | 27 septembrie 2015 15:05:37 | |
---|---|---|---|
Problema | Sortare prin comparare | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.8 kb |
#include<cstdio>
#include<algorithm>
using namespace std;
int v[100005],v2[100005];
void sor(int st,int fi)
{
if(st>=fi)
return ;
int in,po,x,i,t,i1,i2;
in=st;
po=rand();
po=po%(fi-st+1);
x=v[st+po];
t=1;
i1=st;
i2=fi;
for(i=st;i<=fi;i++)
{
if(v[i]<x)
{
v2[i1]=v[i];
i1++;
}
else
if(v[i]>x)
{
v2[i2]=v[i];
i2--;
}
}
for(i=st;i<=fi;i++)
if(i>=i1 && i<=i2)
v[i]=x;
else
v[i]=v2[i];
sor(st,i1-1);sor(i2+1,fi);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
sor(1,n);
for(i=1;i<=n;i++)
printf("%d ",v[i]);
return 0;
}