简单的说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; }