Cod sursa(job #2064034)

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

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

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

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

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

int main () {
	
	fin >> n;
	for (i = 1; i <= n; i++)
		fin >> v[i];
	
	srand (unsigned (time(0)));
	
	quicksort(1, n);
	
	for (i = 1; i <= n; i++)
		fout << v[i] << " ";
}