Cod sursa(job #1574145)

Utilizator afkidStancioiu Nicu Razvan afkid Data 20 ianuarie 2016 10:57:33
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <bits/stdc++.h>
#define N 500100

using namespace std;
int n;
int tab[N];

void quicksort(int *a,int start,int end)
{
	if(start+1>=end)
		return;
	int pivot = rand()%(end-start) +start;
	int i = start;
	int j = end-1;
	swap(a[pivot],a[j]);
	pivot = j;
	while(i<j)
	{
		if(a[i]>a[pivot])
		{
			j--;
			swap(a[j],a[i]);
		}
		else
		{
			i++;
		}
	}
	swap(a[j],a[pivot]);
	quicksort(a,start,j);
	quicksort(a,j+1,end);
}

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	srand(time(NULL));
	cin>>n;
	for(int i=0;i<n;++i)
		cin>>tab[i];
	quicksort(tab,0,n);
	for(int i=0;i<n;++i)
		cout<<tab[i]<<" ";	
	return 0;
}