Cod sursa(job #458751)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 26 mai 2010 07:47:19
Problema Sortare prin comparare Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>

int v[500001];
long int n, i, j;

int Divide (int p, int q)
{
	int st, dr, x;
	st = p;
	dr = q;
	x = v[p];
	while (st < dr)
	{
		while (st < dr && v[dr] >= x)
			dr --;
		v[st] = v[dr];
		while (st < dr && v[st] <= x)
			st ++;
		v[dr] = v[st];
	}
	
	v[st] = x;
	
	return st;
}

void QSort (int p, int q)
{
	int m;
	m = Divide (p, q);
	if (m - 1 > p)
		QSort (p, m - 1);
	if (m + 1 < q)
		QSort (m + 1, q);
}

int main ()
{
	FILE *f = fopen ("algsort.in","r");
	FILE *g = fopen ("algsort.out","w");
	fscanf (f,"%ld", &n);
	for (i=1; i<=n; ++i)
		fscanf (f,"%d", &v[i]);
	
	QSort (1, n);
	
	for (i=1; i<=n; ++i)
		fprintf (g,"%d ", v[i]);
	
	fclose(g);
	fclose(f);
	return 0;
}