Cod sursa(job #1209864)

Utilizator an_drey_curentandreycurent an_drey_curent Data 18 iulie 2014 19:58:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>
FILE *in, *out;
int N, A[500005];
void open()
{
	in = fopen("algsort.in", "rt");
	out = fopen("algsort.out", "wt");
}
void read()
{
	fscanf(in, "%d", &N);
	for (int i = 0; i < N; i++)
		fscanf(in, "%d", &A[i]);
}
void write()
{
	for (int i = 0; i < N; i++)
		fprintf(out, "%d ", A[i]);
}
void swap(int i, int j)
{
	int aux = A[i];
	A[i] = A[j];
	A[j] = aux;
}
void quicksort(int left, int right)
{
	if (left >= right) return;

	int i = left, j = right, piv = A[(left + right) / 2];

	while (i <= j)
	{
		while (A[i] < piv) i++;
		while (A[j] > piv) j--;

		if (i <= j)
		{
			swap(i, j);
			i++, j--;
		}
	}

	quicksort(left, j);
	quicksort(i, right);
}
int main()
{
	open();
	read();
	quicksort(0, N - 1);
	write();
	return 0;
}