Cod sursa(job #905601)

Utilizator bogdan...Marchis Bogdan Cristian bogdan... Data 5 martie 2013 22:46:35
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>
#define NMAX 500001

int partition (int v[NMAX], int p, int r)
{
	int x = v[r], i = p - 1;
	int j, aux;
	for (j = p; j < r; j++)
	{
		if (v[j] < x)
		{
			i++;
			aux = v[j];
			v[j] = v[i];
			v[i] = aux;
		}
	}
	aux = v[i + 1];
	v[i + 1] = v[r];
	v[r] = aux;
	return i + 1;
}

void quick (int v[NMAX], int p, int r)
{
	int q;
	if (p < r)
	{
		q = partition (v, p, r);
		quick (v, p, q - 1);
		quick (v, q + 1, r);
	}
}

int main ()
{
	freopen ("algsort.in", "r", stdin);
	freopen ("algsort.out", "w", stdout);
	int n, i, v[NMAX];
	scanf ("%d", &n);
	for (i = 0; i < n; i++)
		scanf ("%d", &v[i]);
	quick (v, 0, n - 1);
	for (i = 0; i < n; i++)
		printf ("%d ", v[i]);
	printf ("\n");
	return 0;
}