Cod sursa(job #1590115)

Utilizator toranagahVlad Badelita toranagah Data 4 februarie 2016 18:47:24
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <iostream>
#include <cstdio>
#include <ctime>
using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

const int MAX_N = 500100;

int n;
int v[MAX_N];

void quicksort(int lo, int hi) {
	if (lo >= hi) return;

	int pivot = rand() % (hi - lo) + lo;

	swap(v[pivot], v[lo]);

	int i = lo + 1, j = hi;
	while (i <= j) {
		while (i <= j && v[i] <= v[lo]) i += 1;
		while (i <= j && v[j] > v[lo]) j -= 1;

		if (i < j) {
			swap(v[i], v[j]);
		}
	}

	pivot = i - 1;
	swap(v[lo], v[pivot]);

	quicksort(lo, pivot - 1);
	quicksort(pivot + 1, hi);
}

int main() {
	srand(time(NULL));
	fin >> n;

	for (int i = 1; i <= n; i += 1) {
		fin >> v[i];
	}

	quicksort(1, n);

	for (int i = 1; i <= n; i += 1) {
		fout << v[i] << ' ';
	}

	return 0;
}