Cod sursa(job #393911)

Utilizator MciprianMMciprianM MciprianM Data 10 februarie 2010 10:25:45
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<iostream>
#include<cstdlib>
using namespace std;
int a[500009];
void swap(int& a, int& b){
	int aux;
	aux=a;a=b;b=aux;
}
int partitie(int st, int dr){
	int p, pos, k, i;
	srand(time(NULL));
	p=((rand()%(dr-st+1))+st);
	k=a[p];	pos=st;
	swap(a[pos], a[p]);
	for(i=st+1;i<=dr;i++)
		if(a[i]<=k)
			swap(a[++pos],a[i]);
	swap(a[pos],a[st]);
	return pos;
}
void quisort(int st, int dr){
	if(st<dr){
		int m=partitie(st, dr);
		quisort(st, m-1);
		quisort(m+1, dr);
	}
}
int main(){
	int n, i;
	freopen("algsort.in", "r", stdin);
	freopen("algsort.out", "w", stdout);
	cin>>n;
	for(i=0;i<n;i++)
		cin>>a[i];
	quisort(0, n-1);
	for(i=0;i<n;i++)
		cout<<a[i]<<' ';
	cout<<'\n';
	return 0;
}