vector<int> data = {3, 1, 5, 3, 3, 8, 7, 3, 2};
std::nth_element(data.begin(), data.begin() + median, data.end());
Всегда ли это приведет к:
data = {less, less, 3, 3, 3, 3, larger, larger, larger} ?
Или другой возможный результат:
data = {3, less, less, 3, 3, 3, larger, larger, larger} ?
Я пробовал это несколько раз на своей машине, что приводило к тому, что n-е значения всегда были смежными. Но это не доказательство ;).
Для чего это:
Я хочу создать уникальный Kdtree, но у меня есть дубликаты в моем векторе. В настоящее время я использую nth_element для поиска медианного значения. Проблема заключается в том, чтобы выбрать уникальную/реконструируемую медиану без повторного прохождения вектора. Если бы медианные значения были смежными, я мог бы выбрать уникальную медиану без особого обхода.