inplace_merge
требует сортировки входов, что указано в [alg.merge] :
Требуется: [первый, средний) и [средний, последний) должны быть действительными диапазонами , отсортированными по comp
и proj
.
Строго говоря, предоставление несортированного ввода в inplace_merge
- это неопределенное поведение , конец истории.
Но стандарт также требует, чтобы он был стабильным и O (N) сложность .
Что приводит нас к единственно возможной реализации с использованием алгоритма с двумя указателями : проходите оба диапазона одновременно, «объединяя» их вместе, выбирая наименьшие элементы из обоих на каждом шаге.
Таким образом, на практике, скорее всего, он будет выполнен до конца с несортированным результатом.