Cod sursa(job #384426)

Utilizator hulparuadrianhulparu adrian hulparuadrian Data 20 ianuarie 2010 02:14:43
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<stdio.h>
#include<stdlib.h>
#define SIZE 500001
int n, x[SIZE];

int partition(int l, int r)
{
int p=x[l];
int i=l-1, j=r+1;
while(1)
{
do i++; while(x[i]<p);
do j--; while(x[j]>p);
if (i<j)
{
int temp = x[i];
x[i] = x[j];
x[j] = temp;
}
else return j;
}
}


void quicksort(int l, int r)
{
if (l>r) return;
int q=partition(l,r);
quicksort(l,q);
quicksort(q+1,r);
}

int main()
{
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	scanf("%d",&n);
	for(int i=1; i<=n; scanf("%d",&x[i++]));
	fclose(stdin);
	quicksort(1,n);
	for(int j=1; j<=n; printf("%d ",x[j++]));
	fclose(stdout);
	return 0;
}