Cod sursa(job #623797)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 20 octombrie 2011 19:27:07
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<fstream>
#include<algorithm>
#define NMAX 500010

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int a[NMAX], n;

void Citeste()
{
	int i;
	f>>n;
	for (i=1; i<=n; ++i) f>>a[i];
}

int part(int st, int dr)
{
	int s=st, d=dr, p=a[st];
	
	while (s<=d)
	{
		while (a[s]<=p && s<=d) ++s;
		while (a[d]>=p && d>=s) --d;
		if (s<d) swap(a[d], a[s]);
	}
	swap(a[d], a[st]);
	return d;
}

void Quick(int st, int dr)
{
	int pz;
	pz=part(st, dr);
	if (pz-1>st) Quick(st, pz-1);
	if (pz+1<dr) Quick(pz+1, dr);
}

void Scrie()
{
	int i;
	for (i=1; i<=n; ++i) g<<a[i]<<" ";
}

int main()
{
	Citeste();
	Quick(1, n);
	Scrie();
	f.close();
	g.close();
	return 0;
}