Я реализую алгоритм быстрой сортировки из книги алгоритмов Кормена (CLRS), но всегда запрашивает «смещение вне диапазона», и я не знаю, как его исправить. Вот мой код.quick sort in C++
template<typename Iterator>
void quick_sort(Iterator first, Iterator last)
{
if (last - first > 1)
{
auto pivot = partition(first, last);
quick_sort(first, pivot);
quick_sort(pivot + 1, last);
}
}
template<typename Iterator>
Iterator partition(Iterator first, Iterator last)
{
auto pivot = last - 1;
auto less_end = first - 1;
for (auto iter = first; iter != pivot; ++iter)
{
if (*iter <= *pivot)
{
std::swap(*++less_end, *iter);
}
}
std::swap(*(less_end + 1), *pivot);
return less_end + 1;
}
Заранее благодарен!