Cod sursa(job #1502987)

Utilizator voillpalMihai Voinea voillpal Data 15 octombrie 2015 13:05:29
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
using namespace std;

int v[500001];

int partition(int lo, int hi) {
	int i, j, pivot;
	i = rand() % (hi - lo + 1) + lo;
	swap(v[i], v[lo]);
	pivot = v[lo];
	i = lo;
	j = lo + 1;

	while (j <= hi) {
		if (v[j] <= pivot) {
			i++;
			swap(v[i], v[j]);
		}
		j++;
	}
	swap(v[lo], v[i]);
	return i;
}

void quickSort(int lo, int hi) {
	if (lo < hi) {
		int k = partition(lo, hi);
		quickSort(lo, k-1);
		quickSort(k+1, hi);
	}
}

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

	return 0;
}