Cod sursa(job #2643345)

Utilizator RaduVFVintila Radu-Florian RaduVF Data 19 august 2020 16:20:23
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

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

int findPivot(std::vector<int>& v, int st, int dr) {
	int p = v[dr], k = st - 1;
	for (int i = st; i < dr; ++i) {
		if (v[i] < p) {
			k++;
			std::swap(v[i], v[k]);
		}
	}
	std::swap(v[k + 1], v[dr]);
	return k + 1;
}

void quickSort(std::vector<int>& v, int st, int dr) {
	if (st < dr) {
		int p = findPivot(v, st, dr);
		quickSort(v, st, p - 1);
		quickSort(v, p + 1, dr);
	}
}

int main() {
	int n;
	fin >> n;
	std::vector<int> v(n);
	for (int i = 0; i < n; ++i) {
		fin >> v[i];
	}
	quickSort(v, 0, n - 1);
	for (int i = 0; i < n; ++i) {
		fout << v[i] << ' ';
	}
	return 0;
}