Cod sursa(job #1889093)

Utilizator medicinedoctoralexandru medicinedoctor Data 22 februarie 2017 16:04:28
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>

int a[500000],n,i;

void read()
{
	FILE *f;
	f = fopen("algsort.in","r");

	fscanf(f, "%d", &n);

	for ( i = 1; i <= n; i++)
		fscanf(f, "%d", &a[i]);

	fclose(f);
}

void swap(int *x, int *y)
{
	int q = *x;
	*x = *y;
	*y = q;
}

void qs(int l, int r)
{
	int i = l, j = r, q = a[ (i + j) / 2] ;

	while (i < j)
	{
		while (a[i] < q) i++;
		while (a[j] > q) j--;
		if (i <= j)
		{
			swap(&a[i], &a[j]);
			i++; j--;
		}
	}
	
	if (i < r) qs(i, r);
	if (l < j) qs(l, j);
}

void write()
{
	FILE *f;
	f = fopen("algsort.out","w");

	for ( i = 1; i <= n; i++)
		fprintf(f, "%d ", a[i]);

	fclose(f);
}

int main()
{
	read();

	qs(1,n);

	write();
	
	return 0;
}