Cod sursa(job #809681)

Utilizator mihaibogdan10Mihai Bogdan mihaibogdan10 Data 8 noiembrie 2012 20:24:35
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<cstdio>
#include<algorithm>
#include<time.h>
using namespace std;
int n, v[1<<21];

void qsort(int st, int dr) {
	int i = st, j = dr, pivot = i + rand() % (j - i + 1), value = v[pivot], index;
	
	swap(v[pivot], v[j]);
	
	for (index = st; i < dr; i++)
		if (v[i] < value)
			swap(v[i], v[index++]);
	
	swap (v[index], v[dr]);

	if (st < index - 1) qsort (st, index - 1);
	if (dr > index + 1) qsort (index + 1, dr);
}

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