Cod sursa(job #412359)

Utilizator f.v.antonFlavius Anton f.v.anton Data 5 martie 2010 15:26:29
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>
using namespace std;
long int x[500001];
void swap(int p, int q)
{
	long temp=x[p]; x[p]=x[q]; x[q]=temp;
}
int pivot(int p, int q)
{
	while(p<q)
	{
		while(x[p]<=x[q]&&p<q)
			q--;
		if(p<q)
			swap(p,q);
		while(x[p]<=x[q]&&p<q)
			p++;
		if(p<q)
			swap(p,q);
	}
	return p;
}
void sorteaza(int p, int q)
{
	int k=pivot(p,q);
	if(k>p+1)
		sorteaza(p,k-1);
	if(k<q-1)
		sorteaza(k+1,q);
}
int main()
{
	fstream f("algsort.in",ios::in), g("algsort.out",ios::out);
	int n,i;
	f>>n;
	for(i=1;i<=n;i++)
		f>>x[i];
	f.close();
	sorteaza(1,n);
	for(i=1;i<=n;i++)
		g<<x[i]<<" ";
	g.close();
	return 0;
}