AlexSetup
@AlexSetup
Python

Где ошибка в реализации алгоритма QuickSort?

Начал изучение C++.
Решил реализовать алгоритм быстрой сортировки, а он не работает

Вот код:
#include <iostream>
#include <vector>

using namespace std;

int Partition(vector<int> A, int p, int r) {
	int x = A[r];
	int i = p - 1;
	for (int j = p; j < r-1; j++) {
		if (A[j] <= x) {
			i++;
			swap(A[i], A[j]);
		}
	}
	swap(A[i + 1], A[r]);
	return i + 1;
}

void Quicksort(vector<int> A, int p, int r) {
	if (p < r) {
		int q = Partition(A, p, r);
		Quicksort(A, p, q - 1);
		Quicksort(A, q + 1, r);
	}
}

int main() {
	int n;
	cin >> n;
	vector <int> A(n);
	for (int i = 0; i < n; i++) {
		cin >> A[i];
	}
	Quicksort(A, 0, A.size() - 1);
	for (int i = 0; i < n; i++) {
		cout << A[i] << " ";
	}
	system("pause");
	return 0;
}

Где ошибка? И как ее исправить?
Программа выводит:
5a5e0228354d8508262779.png
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Вектор передаете по значению. При каждом вызове функции будет создаваться копия. Исправить эту ошибку так: void Quicksort(vector<int> &A, int p, int r)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы