1、头文件

#include<algorithm>

2、函数模板

default (1)
template <class RandomAccessIterator>void nth_element (RandomAccessIterator first, RandomAccessIterator nth,RandomAccessIterator last);
custom (2)
template <class RandomAccessIterator, class Compare>void nth_element (RandomAccessIterator first, RandomAccessIterator nth,RandomAccessIterator last, Compare comp)

nth_element将默认升序排列,Compare comp可以自己设置排序规则

对于数组array[first,last),使用nth_element函数可以使输出的新的排列顺序上的array[nth]位置上的元素与按默认升序排列输出的数组array[nth]位置上的元素相同。因为nth_element默认升序排列,那么array[nth]左边的元素都比array[nth]小,但不一定顺序排列;同理右边的元素都比array[nth]大,但不一定顺序排列。

举个例子,对于数组array[]={5,2,3,8,7,9,6,1,0,4}

使用sort()函数将得到array[]={0,1,2,3,4,5,6,7,8,9}

使用nth_element(array,array+6,array+len)可能得到array[]={3,4,2,1,0,5,6,8,7,9},但可以确定的是,array[nth]即array[6]位置上的元素与使用sort()函数得到的array[6]一定相同。

3、代码

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;void main()
{int array[]={2,4,1,8,3,6,7,5,9,0};int len=sizeof(array)/sizeof(int);cout<<"排序前:"<<endl;for(int i=0;i<len;i++)cout<<array[i]<<" ";cout<<endl;nth_element(array,array+6,array+len);cout<<"排序后:"<<endl;for(int i=0;i<len;i++)cout<<array[i]<<" ";cout<<endl;cout<<"排好序后的a[6]位置是:"<<array[6]<<endl;
}

使用vs软件的结果:

使用dev软件的结果:

array[6]位置上的元素都是6,实际上得到的是nth+1大的元素

nth_element()相关推荐

  1. STL nth_element

    nth_element(first,nth,last) first,last 第一个和最后一个迭代器,也可以直接用数组的位置.  nth,要定位的第nn 个元素,能对它进行随机访问. 将第n_thn_ ...

  2. STL中的nth_element()方法的使用

    STL中的nth_element()方法的使用 通过调用nth_element(start, start+n, end) 方法可以使第n大元素处于第n位置(从0开始,其位置是下标为 n的元素),并且比 ...

  3. 深海中的STL—nth_element

    如果让你求区间第\(k\)大,你会怎么做呢? 主席树?确实是个不错的选择(不过像我这种垃圾还是乖乖打暴力吧) 在c++的stl库中,提供了nth_element这样一个函数 它的用法是nth_elem ...

  4. Arithmetic Sequence 三分,货仓选址,nth_element,__int128(济南)

    题意 : 给一序列,每次操作选择一个数加一或者减一,需要将这个序列变成等差数列,问最小操作数 思路 : 数据范围很大又没有头绪,想到二分或者三分.对于不同的公差d,肯定是只有一个最优,两边的都比这个公 ...

  5. boost::nth_element相关的测试程序

    boost::nth_element相关的测试程序 实现功能 C++实现代码 实现功能 boost::nth_element相关的测试程序 C++实现代码 #include <boost/ran ...

  6. 利用向量叉积求三角形的面积(+STL:nth_element求第K大的数)

    牛客寒假算法集训营2 https://ac.nowcoder.com/acm/contest/327/A A.处女座的签到题 题目描述 平面上有n个点,问:平面上所有三角形面积第k大的三角形的面积是多 ...

  7. nth_element

    1 前言 近期学习K-D Tree,用到了nth_element,然而不是很确定具体的用法 然而,在网上搜索.点了几篇博客要么写的不是很清楚,要么干脆直接是错的 于是这篇博客用来记录我个人对nth_e ...

  8. nth_element(a+1 , a + m, a + n+1);

    1 nth_element(a+1 , a + m, a + n+1); 2 nth_element(first , mth, end); 3 区间[first,end)以第m个数为分界线前面都小,后 ...

  9. sort()、stable_sort()、partial_sort()、nth_element()、greater()、is_sorted()

    sort(a, a+5); // 默认从小到大,int数组的排序 sort(v.begin(), v.end()); // vector数组排序 sort中使用的是快排和插排 stable_sort( ...

  10. C++11标准模板(STL)- 算法(std::nth_element)

    定义于头文件 <algorithm> 算法库提供大量用途的函数(例如查找.排序.计数.操作),它们在元素范围上操作.注意范围定义为 [first, last) ,其中 last 指代要查询 ...

最新文章

  1. Python字典循环与字典排序
  2. nanflash编程的地址问题
  3. Pascal's Triangle Leetcode Java and C++
  4. bzoj4504 K个串
  5. Ant—使用Ant构建简单Java项目(三)
  6. 新零售业背景下实体店的经营战略
  7. ARM7开发软件安装步骤
  8. 使用css样式做出亚克力背景和透明背景
  9. vue 中点击叉号,关闭div的方法
  10. dhcp服务器可以连接无线网吗,无线网dhcp服务器设置
  11. 股票交易sdk接口是什么意思?
  12. Python|猜球博弈
  13. axios(尚硅谷)
  14. ps里面怎么插入流程图_用PS怎么画流程图?
  15. FileSystemWatcher触发多次Change事件的解决办法
  16. JAVAEE工程师技术课之第二课运算符.输入类
  17. 基于Java基础-面向对象实现植物大战僵尸简易版
  18. 从0到1了解Prometheus
  19. go 源码分析string、[]byte的相互转换
  20. 区块链酒水链投资骗局

热门文章

  1. 盘点激光雷达常用的10大数据处理软件
  2. Redis-入门学习笔记
  3. 《Java语言程序设计》 课程分析与总结(上)---我为什么这样设计考试试卷?
  4. 先用总分升序再用计算机降序,怎样用升序降序给EXCEL排名
  5. AR.js 学习笔记
  6. 最新前端体系学习路径推荐(内附免费资料)
  7. Verse on Premises 1.0.5IF1发布
  8. 6-4 静态成员应用
  9. vue-cli通过symbol引用阿里iconfont图标
  10. 它来了,它来了,船新 MySQL + MyBatis 版学生管理系统来了