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 来查找中值。问题是选择一个唯一/可重构的中位数,而不必再次遍历向量。如果中值是连续的,我可以选择一个唯一的中值,而无需太多遍历。