部分排序:具有预先订购顺序的第n个元素

时间:2015-05-22 07:56:35

标签: c++ nth-element partial-sort

任务是对带有重复的矢量进行部分排序。如果向量被排序,则中位数(第n个元素)位于它将是的位置。所有较小的元素应位于左侧,所有较大的元素应位于右侧。所有与中位数相同的元素必须按原始顺序排列 - 但只有这些元素不是其他元素。

你会如何解决这个问题?

我最初的解决方案:

  1. 使用std :: nth_element()查找中间元素
  2. 遍历向量并仅对与其索引具有相同值的元素进行排序。我怎样才能有效地做到这一点?

1 个答案:

答案 0 :(得分:0)

使用partition或stable_partition(保留原始订单)。

gsub