Cod sursa(job #1764072)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 24 septembrie 2016 22:56:32
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <ctime>
#include <cstdlib>
using namespace std;

int A[500010], N, i;	


void qsort(int A[], int s, int d) {
	if (s >= d) {
		return;
	}

	int p = A[s + rand() % (d - s + 1)];
	int i = s, j = d, aux = 0;
	while (i <= j) {
		while (A[i] < p && i < j) i++;
		while (A[j] > p && i < j) j--;
		if (A[i] == A[j]) {
			j--;
		} else {
			aux = A[i]; A[i] = A[j]; A[j] = aux;
		}
	}
	
	qsort(A, s, i - 1);
	qsort(A, i + 1, d);
}


int main() {
	srand(time(0));

	freopen("algsort.in", "r", stdin);
	freopen("algsort.out", "w", stdout);

	scanf("%d", &N);
	for (i = 0; i < N; i++) {
		scanf("%d", &A[i]);
	}

	qsort(A, 0, N - 1);

	for (i = 0; i < N; i++) {
		printf("%d ", A[i]);
	}

	return 0;
}