【发布时间】:2015-05-22 16:33:56
【问题描述】:
任务是对具有重复 s.t. 的向量进行部分排序。如果对向量进行了排序,则中位数(第 n 个元素)位于它的位置。所有较小的元素都应该在左边,所有较大的元素都应该在右边。与中值相同的所有元素都必须按原始顺序排列 - 但只有这些元素不是其余元素。
你会怎么解决这个问题?
我的初步解决方案:
- 使用 std::nth_element() 查找中间元素
- 遍历向量并仅对具有与中位数相同值的元素进行排序。我将如何有效地做到这一点?
【问题讨论】:
-
您当前的解决方案有什么问题?
-
我正在寻找一个非常有效的解决方案——尤其是第 2 部分:仅对向量的特定值进行排序。
-
当元素具有相同值时,如何定义“原始顺序”?不是例如的任何排列
{3 3 3 3}“原订单”? -
这是一个k维向量
vector<Point<T>>和struct Point{ num_t x,y,z, ID; };所以有一个原始顺序。
标签: c++ nth-element partial-sort