Cod sursa(job #652171)

Utilizator SteveStefan Eniceicu Steve Data 23 decembrie 2011 10:52:06
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream.h>

int v[500100];

void quick (int l1, int l2)
{
	int l1a, l2a;
	l1a = l1;
	l2a = l2;
	int pivot = 1;
	if (l1 >= l2) return;
	while (l1 < l2)
	{
		if (v[l1] > v[l2])
		{
			int auxiliar = v[l1];
			v[l1] = v[l2];
			v[l2] = auxiliar;
			if (pivot == 1)
			{
				l1++;
				pivot = 2;
			}
			else
			{
				l2--;
				pivot = 1;
			}
		}
		else
		{
			if (pivot == 1) l2--;
			else l1++;
		}
	}
	quick (l1a, l1 - 1);
	quick (l1 + 1, l2a);
}

void main()
{
	int i, lungime;
	ifstream fin;
	fin.open("fast.in");
	fin >> lungime;
	for (i = 0; i < lungime; i++)
	{
		fin >> v[i];
	}
	fin.close ();
	quick (0, lungime - 1);
	ofstream fout;
	fout.open ("fast.out");
	for (i = 0; i < lungime; i++)
	{
		fout  << v[i]  << " ";
	}
}