Cod sursa(job #2973959)

Utilizator matthriscuMatt . matthriscu Data 2 februarie 2023 20:54:53
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
using namespace std;

size_t partition(vector<int>& v, size_t left, size_t right) {
	if (left >= right)
		return left;

	size_t index = left;
	int pivot = v[right - 1];

	for (size_t i = left; i < right; ++i)
		if (v[i] <= pivot)
			swap(v[index++], v[i]);

	swap(v[index], v[right - 1]);

	return index;
}

void quicksort(vector<int>& v, size_t left, size_t right) {
	if (left >= right)
		return;
	
	size_t index = partition(v, left, right);

	quicksort(v, left, index - 1);
	quicksort(v, index + 1, right);
}

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

	int n;

	fin >> n;

	vector<int> v(n);

	for (int &x : v)
		fin >> x;

	quicksort(v, 0, v.size() - 1);

	for (int &x : v)
		fout << x << ' ';
	fout << '\n';
}