Задача состоит в том, чтобы частично отсортировать вектор с дубликатами s.t. медиана (n-й элемент) находится в положении, которое было бы, если бы вектор был отсортирован. Все меньшие элементы должны быть слева, все более крупные элементы справа. Все элементы со значениями, такими же, как медианные, должны быть в исходном порядке, но только эти не остальные элементы.Частичная сортировка: n-ые элементы, имеющие заданный порядок
Как бы вы это разрешили?
Мое начальное решение:
- Использование станд :: nth_element(), чтобы найти медиану элемент
- траверс вектор и сортировать только элементы с одинаковым значением в среднем по отношению к их индексу. Как я могу сделать это эффективно?
В чем проблема с вашим текущим решением? – kraskevich
Я ищу очень эффективное решение - особенно часть 2: сортировка только определенных значений вектора по их индексам. – aces
Как вы определяете «исходный порядок», когда элементы имеют одинаковое значение? Не существует какой-либо перестановки, например. '{3 3 3 3}' "первоначальный заказ"? – user463035818