Cod sursa(job #370885)

Utilizator catalin93Catalin Ionescu catalin93 Data 2 decembrie 2009 18:26:36
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>
#include<cstdlib>
using namespace std;
int n,v[500001];
inline void schimb(int &a, int &b)
{
	int aux;
	aux = b;
	b= a;
	a = aux;
}

int partitie(int st, int dr)
{
	int poz = st,piv,pp=st+rand()%(dr-st+1);
	schimb(v[dr],v[pp]);
	piv=v[dr];
	for(int i = st ; i < dr ; ++i)
		if(v[i] < piv)
			schimb(v[i],v[poz++]);
	schimb(v[poz],v[dr]);	
	return poz;
}
void sort(int st, int dr)
{
	if(st >= dr)
		return ;
	int p = partitie(st,dr);
	sort(st,p-1);
	sort(p+1,dr);
}


int main()

{
	//freopen("algsort.in","r",stdin);
	//freopen("algsort.out","w",stdout);
	ifstream in("algsort.in");
	ofstream out("algsort.out");
	//scanf("%d",&n);
	in>>n;
	for(int i=1;i<=n;i++)
		//scanf("%d",&v[i]);
		in>>v[i];
	sort(1,n);
	for(int i = 1;i<=n;i++)
		//printf("%d ",v[i]);
		out<<v[i]<<" ";
	return 0;
}