快排nth_element
来源:互联网 发布:2017淘宝热卖产品 编辑:程序博客网 时间:2024/06/05 09:19
多组输入数据
第一行为正整数n(1 <= n <= 100000)
接下来n个int范围内的正整数
对于每组数据,输出一行,为这n个数中的的中位数
本题与平时学的快排求第k大数(小数)一样,只不过k值为中位数下标。本题对时间性能要求高,故应该用STL中的nth_element()。通过调用nth_element(start,start+n,end)方法可以使第n大元素处于第n位置,并且比这个元素小的排在这个元素前面,比这个元素大的排在后面,类似于快排的Partition功能。
#include<cstdio>#include<algorithm>int a[1000000];int main(){ int n; while(~scanf("%d",&n)){ for(int i=0;i<n;i++) scanf("%d",&a[i]); int k=(n%2==1)?n/2:n/2-1; std::nth_element(a,a+k,a+n); printf("%d\n",a[k]); }}
0 0
- 快排nth_element
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- How to use fasterxml Jackson JSON serialization in Spring 4
- 34. Search for a Range
- 失败成就伟大:谷歌的23个失败案例
- pg学习_子查询
- 两张图快速理解[区块链]
- 快排nth_element
- CCFCSP201412-2Z字形扫描
- pg学习_多表连接
- 统计概念总结
- 将一个网络分为两个子网 通过已知IP和子网掩码计算其同一网段的主机IP
- 工厂数据管理系统
- 多线程个人问题汇总
- python3 for 循环中的 else 语句
- 深夜切题——ly与lyon的终极巅峰对决