Cod sursa(job #1764084)

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

int A[500010], N, i;	


void qsort(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(s, i - 1);
	qsort(i + 1, d);
}


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

	//freopen("algsort.in", "r", stdin);
	//freopen("algsort.out", "w", stdout);
	ifstream f("algsort.in");
	ofstream g("algsort.out");
	
	//scanf("%d", &N);
	f >> N;
	for (i = 0; i < N; i++) {
		//scanf("%d", &A[i]);
		f >> A[i];
	}

	qsort( 0, N - 1);

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

	f.close();
	g.close();

	return 0;
}