Это задание из студенческой работы, задача была написать сортировку с использованием std::nth_element и итераторов. Я сделал это:
Код: Выделить всё
template void quick_sort(It beg, It end)
{
if (beg == end || std::distance(beg, end) == 1) return;
auto dist = std::distance(beg, end) / 2;
std::nth_element(beg, std::next(beg, dist), end);
}
И это работало только на некоторых входах. Потом я спросил у товарища о его реализации. И если не считать того, что он использовал одну явную переменную для хранения расстояния, все было точно так же. Для уверенности я скопировал его код, но ничего не изменилось.
Я читал, что «Элементы гипотетически сортируются относительно оператора
Подробнее здесь:
https://stackoverflow.com/questions/792 ... -compilers