Ich implementiere den schnellen Sortieralgorithmus aus Cormen's Algorithm Buch (CLRS), aber es immer "Offset außerhalb des Bereichs", und ich weiß nicht, wie es zu beheben. Hier ist mein Code.schnelle Sortierung 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;
}
Vielen Dank im Voraus!