Cod sursa(job #652179)

Utilizator SteveStefan Eniceicu Steve Data 23 decembrie 2011 11:00:20
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;

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);
}

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