Cod sursa(job #1233397)
| Utilizator | Data | 25 septembrie 2014 11:37:24 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 1.23 kb |
#include<cstdio>
using namespace std;
int x,n,k,i,aux,a[500009];
int sort(int i, int j)
{
int k=i,aux;
x=1;
while(i<j)
{
if(x==1)
{
if(a[i]>a[j])
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
x=2;
i++;
k=j;
}
else{
j--;
k=j;
}
}
else if(x==2)
{
if(a[j]<a[i])
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
x=1;
j--;
k=i;
}
else{
i++;
k=j;
}
}
}
return k;
}
void quick(int p,int u)
{
if (p<u)
{
int k=sort(p,u);
quick(p,k-1);
quick(k+1,u);
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
quick(1,n);
for(i=1;i<=n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
