Быстрая сортировка с разделом не компилируется

Я пытался заставить этот код компилироваться, но, похоже, он не хочет, чтобы функция секционирования работала. Очевидно, это связано с массивом, но я не могу понять, что это такое.

Редактировать: я использую std :: partition, а не оригинальную функцию раздела.

#include <ctime>
#include <string>
#include <algorithm>
#include <array>
#include <iostream>
using namespace std;

const int MAX_SIZE = 10000;
const int MIN_SIZE = 10;

Вот быстрая сортировка:

//quick sort
void quickSort(int arr[], int first, int last, int size)
{
if(last - first + 1< MIN_SIZE)
{
insertionSort(arr,size);
}
else
{
int pivotIndex = partition(arr, first, last);
quickSort(arr, first, pivotIndex-1,size);
quickSort(arr, pivotIndex+1,last,size);
}
}

Вот ошибка:

error: no matching function for call to 'partition(int*&, int&, int&)'

Спасибо всем, кто может это прояснить. Все, кроме функции раздела, кажется, работает нормально.

-2

Решение

Я полагаю, вы сделали using namespace std; выше этого кода. В этом случае, std::partition алгоритм, разработанный для работы с контейнерами STL, а не с массивами в стиле C Попробуйте проверить по ссылке (например, Вот).

К сожалению, вам нужно либо найти / написать алгоритм разбиения, который работает с необработанными массивами, либо перейти с int arr[] что-то вроде std::vector<int>,

В противном случае, если partition это действительно другая функция в вашем коде, пожалуйста, предоставьте ее.

Надеюсь, это поможет.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]