Cod sursa(job #2064372)

Utilizator shantih1Alex S Hill shantih1 Data 12 noiembrie 2017 11:40:22
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
#include <fstream>
#include <cstdlib>
#include <ctime>

using namespace std;

int n, i, j, nr, aux, v[500010];

int partition (int in, int sf)
{
	int pos = in;
	int ind = rand()%(sf-in+1)+in;
	aux = v[sf];	v[sf] = v[ind];		v[ind] = aux;
	
	for (int i = in; i < sf; i++)
		if (v[i] <= v[sf])
		{
			aux = v[pos];	v[pos] = v[i];	v[i] = aux;
			pos++;
		}

	aux = v[pos];	v[pos] = v[sf];		v[sf] = aux;
	return pos;
}
		 

void quicksort (int in, int sf)
{
	if (sf > in)
	{
		int ind = partition(in, sf);
		quicksort (in, ind-1);
		quicksort (ind+1, sf);
	}
}

int main () {
	
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
		scanf("%d", &v[i]);
	
	srand (unsigned (time(0)));
	
	quicksort(1, n);
	
	for (i = 1; i <= n; i++)
		printf("%d ", v[i]);
}