nth_element()
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()相关推荐
- STL nth_element
nth_element(first,nth,last) first,last 第一个和最后一个迭代器,也可以直接用数组的位置. nth,要定位的第nn 个元素,能对它进行随机访问. 将第n_thn_ ...
- STL中的nth_element()方法的使用
STL中的nth_element()方法的使用 通过调用nth_element(start, start+n, end) 方法可以使第n大元素处于第n位置(从0开始,其位置是下标为 n的元素),并且比 ...
- 深海中的STL—nth_element
如果让你求区间第\(k\)大,你会怎么做呢? 主席树?确实是个不错的选择(不过像我这种垃圾还是乖乖打暴力吧) 在c++的stl库中,提供了nth_element这样一个函数 它的用法是nth_elem ...
- Arithmetic Sequence 三分,货仓选址,nth_element,__int128(济南)
题意 : 给一序列,每次操作选择一个数加一或者减一,需要将这个序列变成等差数列,问最小操作数 思路 : 数据范围很大又没有头绪,想到二分或者三分.对于不同的公差d,肯定是只有一个最优,两边的都比这个公 ...
- boost::nth_element相关的测试程序
boost::nth_element相关的测试程序 实现功能 C++实现代码 实现功能 boost::nth_element相关的测试程序 C++实现代码 #include <boost/ran ...
- 利用向量叉积求三角形的面积(+STL:nth_element求第K大的数)
牛客寒假算法集训营2 https://ac.nowcoder.com/acm/contest/327/A A.处女座的签到题 题目描述 平面上有n个点,问:平面上所有三角形面积第k大的三角形的面积是多 ...
- nth_element
1 前言 近期学习K-D Tree,用到了nth_element,然而不是很确定具体的用法 然而,在网上搜索.点了几篇博客要么写的不是很清楚,要么干脆直接是错的 于是这篇博客用来记录我个人对nth_e ...
- 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个数为分界线前面都小,后 ...
- sort()、stable_sort()、partial_sort()、nth_element()、greater()、is_sorted()
sort(a, a+5); // 默认从小到大,int数组的排序 sort(v.begin(), v.end()); // vector数组排序 sort中使用的是快排和插排 stable_sort( ...
- C++11标准模板(STL)- 算法(std::nth_element)
定义于头文件 <algorithm> 算法库提供大量用途的函数(例如查找.排序.计数.操作),它们在元素范围上操作.注意范围定义为 [first, last) ,其中 last 指代要查询 ...
最新文章
- Python字典循环与字典排序
- nanflash编程的地址问题
- Pascal's Triangle Leetcode Java and C++
- bzoj4504 K个串
- Ant—使用Ant构建简单Java项目(三)
- 新零售业背景下实体店的经营战略
- ARM7开发软件安装步骤
- 使用css样式做出亚克力背景和透明背景
- vue 中点击叉号,关闭div的方法
- dhcp服务器可以连接无线网吗,无线网dhcp服务器设置
- 股票交易sdk接口是什么意思?
- Python|猜球博弈
- axios(尚硅谷)
- ps里面怎么插入流程图_用PS怎么画流程图?
- FileSystemWatcher触发多次Change事件的解决办法
- JAVAEE工程师技术课之第二课运算符.输入类
- 基于Java基础-面向对象实现植物大战僵尸简易版
- 从0到1了解Prometheus
- go 源码分析string、[]byte的相互转换
- 区块链酒水链投资骗局