Cod sursa(job #1502976)

Utilizator voillpalMihai Voinea voillpal Data 15 octombrie 2015 12:54:30
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 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() {
	ifstream fin("algsort.in");
	ofstream fout("algsort.out");
	int n;
	fin >> n;
	for (int i = 0; i < n; i++) {
		fin >> v[i];
	}
	quickSort(0, n-1);
	for (int i = 0; i < n; i++) {
		fout << v[i] << " ";
	}
	fout << "\n";

	return 0;
}