c – 部分排序数组,以便排序最后n个元素?

有没有办法对数据数组执行局部排序,以便对最后n个元素进行排序?好吧我的意思是使用标准库,而不是实现我自己的排序功能(这就是我现在正在做的事情).
示例输出(使用较少的比较器):

2 1 4 || 5 6 8 10

||之后的元素都比||之前的元素大于元素,但只包含||右边的元素(更接近数组末尾的索引)保证排序.

这基本上是std :: partial_sort函数的反转,它对左(第一)元素进行排序.

解决方法

将std :: partial_sort与反向迭代器一起使用.

例如:

int x[20];
std::iota(std::begin(x),std::end(x),0);
std::random_shuffle(std::begin(x),std::end(x));

std::reverse_iterator<int*> b(std::end(x)),e(std::begin(x));
std::partial_sort(b,b+10,e,std::greater<int>());
for (auto i : x)
    std::cout << i << ' ';

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...