Pagini recente » Cod sursa (job #1030731) | Cod sursa (job #235344) | Istoria paginii utilizator/vlad_cazac | Istoria paginii runda/oni.test-2010_runda3 | Cod sursa (job #2106937)
#include <cstdio>
#include <algorithm>
using namespace std;
int n,i,a[500001];
int poz(int p,int u)
{
int i,j,k,t;
i=p;
j=u;
t=0;
k=i;
while(i<j)
if(!t)
if(a[k]<a[j])
j--;
else
{
swap(a[k],a[j]);
k=j;
i++;
t=1;
}
else
if(a[i]<a[k])
i++;
else
{
swap(a[i],a[k]);
k=i;
j--;
t=0;
}
return k;
}
void quick_sort(int p,int u)
{
int k;
if(u-p==1)
{
if(a[p]>a[u])
swap(a[p],a[u]);
}
else
if(p<u)
{
k=poz(p,u);
quick_sort(p,k-1);
quick_sort(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_sort(1,n);
for(i=1;i<=n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}