Cod sursa(job #670301)

Utilizator geniucosOncescu Costin geniucos Data 28 ianuarie 2012 20:30:31
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<stdio.h>
using namespace std;
int i1,n,a[1001];
int poz(int p,int u)
{
	int aux,i,j,nr;
	i=p;
	j=u;
	nr=0;
	int k=i;
	while(i<=j)
	{
		if(nr%2==0)
		{
			while(a[k]<=a[j]) j--;
			if(i<=j)
			{
				aux=a[i];
				a[i]=a[j];
				a[j]=aux;
				nr++;
				k=j;
			}
		}
		else
		{
			while(a[k]>=a[i]) i++;
			if(i<=j)
			{
				aux=a[i];
				a[i]=a[j];
				a[j]=aux;
				nr++;
				k=i;
			}
		}
	}
	return k;
}
void quick(int p,int u)
{
	if(u-p==1)
	{
		if(a[p]>a[u])
		{
			int aux=a[p];
			a[p]=a[u];
			a[u]=aux;
		}
	}
	else
	if(u-p>1)
	{
		int k=poz(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(i1=1;i1<=n;i1++)
	scanf("%d",&a[i1]);
quick(1,n);
for(i1=1;i1<=n;i1++)
	printf("%d\n",a[i1]);
return 0;
}