简单的说nth_element算法仅排序第nth个元素(从0开始的索引)
如iarray [first,last) 元素区间
排序后 iarray[nth] 就是第nth大的元素(从0开始)
要注意的是[first,nth) [nth,last)内的大小循序还不一定
只能确定iarray[nth]是第nth大的元素。
当然[first,nth) 肯定是不大于 [nth,last)的。
简单测试代码如下
要注意的是,此函数只是将第nth大的元素排好了位置,但并没有返回值
所以要知道第nth大的元素 还得进行一步,cout<<iarray[nth]<<endl; nth既那个位子
#include <iostream> #include <algorithm> using namespace std; int main() { int iarray[]={5,6,15,89,7,2,1,3,52,63,12,64,47}; int len=sizeof(iarray)/sizeof(int); int i; for(i=0;i<len;i++) cout<<iarray[i]<<" "; nth_element(iarray,iarray+6,iarray+len); //排序第6个元素 cout<<endl; for(i=0;i<len;i++) cout<<iarray[i]<<" "; cout<<" 第6-th个元素 "<<iarray[6]<<endl; }
本文介绍了C++标准库中的nth_element算法。该算法可以快速找到数组中第n大的元素,并将其放置在正确的位置上,但不保证整个数组有序。通过一个简单的示例程序展示了如何使用nth_element来找出指定位置的元素。
791

被折叠的 条评论
为什么被折叠?



