给定随机数列求第k大的数字
原来STL我还是有很多不知道的地方
STL 采用的算法是: 当数组长度 <= 3时, 采用插入排序。
当长度 > 3时, 采用快排 Partition 的思想,也就是说类似快速排序(这里不妨假设是降序排列);
快排Partition思想,随机选择一个分界点,进行一次划分。划分结束后,考察划分点现在的位置i:
如果待求的第k大在划分点后面,那么在a[i+1:len(a)]子序列中寻找第k-i-1大的数字;
如果待求点在划分点前面,那么在a[0:i-1]子序列中寻找第k大的数字
如果正好i=k,返回就完了
#include<iostream>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int main(){int a[10];for (int i = 0; i < 10; i++){a[i] = rand();cout << a[i] << " ";}puts("");nth_element(a, a + 3, a + 10);cout << a[3] << endl;return 0;
}
转载于:https://www.cnblogs.com/weiyinfu/p/6637492.html
给定随机数列求第k大的数字相关推荐
- 无序数组求第k大的数 python_整数无序数组求第K大数
import java.util.Scanner; /** * 类似与求第k小的问题 * 求第k大相当于求第n-k+1小,n为数组长度 * * 著名的BFPRT算法可保证在线性时间内得到结果. * h ...
- 算法题 求第K大的数
题目描述:在乱序数组中求第K大的数 思路:立刻想到的是当然先排序然后取数.但是提问者明显不是想这么解.上网查了下原来是快排思路. 利用快排的思想,从数组arr中随机找出一个元素X,把数组分成两部分ar ...
- 堆实战(动态数据流求top k大元素,动态数据流求中位数)
动态数据集合中求top k大元素 第1大,第2大 ...第k大 k是这群体里最小的所以要建立个小顶堆 只需要维护一个大小为k的小顶堆 即可当来的元素(newCome)> 堆顶元素(smallTo ...
- 树状数组与离散化与求第K大模板
树状数组模板: //Cnt为数组的界 //cnt[i]为编号或者数值上小于id的数量 void Update(LL Id) {while(Id<=Cnt){cnt[Id]++;Id+=lowbi ...
- 两个排序数组中求第k大的sum(a+b)
两个数组A,B. 是排好序的,a是A中的元素,b是B中的元素,求第k大的sum(a+b) 先把a[1]+b[1]放入堆中, 每次从堆中取得最小值,设a[i]+b[j],并扩展a[i+1]+b[j] , ...
- 单峰数组求第k大算法
单峰数组实际上可以看成两个有序的数组,这个问题就转变成了两个有序数组求第k大. 容易想到的算法是对这两个数组进行归并,生成一个新的有序数组,求出第k大之后就可以立刻停止,复杂度是O(k)的. 但是还有 ...
- 在N个数中查找第K大的数字(Top K问题)
在N个乱序数字中查找第k大的数字,时间复杂度可以减小至 O(N*logN) O(N) O(1) O(2) 答案:B 所谓"第(前)k大数问题"指的是在长度为n(n>=k)的乱 ...
- 在N个乱序数字中查找第k大的数字
在N个乱序数字中查找第k大的数字 在N个乱序数字中查找第k大的数字,时间复杂度可以减小至 O(N*logN) O(N) O(1) O(2) 答案:B 所谓"第(前)k大数问题"指的 ...
- 【算法】在N个乱序数字中查找第K大的数字
目录 1. 结论 2. 经典的几种解法 2.1 解法一:O(n*k) 2.2 解法二:O(n*logk) 2.3 解法三:O(n) 2.4 解法四:O(n*logn+k) 2.5 解法五:O(n*lo ...
最新文章
- GEO数据挖掘(3)-芯片基础知识
- R语言数据包自带数据集之mtcars数据集字段解释、数据导入实战
- python拟合威布尔参数_威布尔分布拟合数据
- 字符串中全角半角之间的转换
- scala 线性回归_Scala的特征线性化
- SpringBoot集成Shiro进行权限控制和管理
- python生成正态分布数据_python 生成正态分布数据,并绘图和解析
- 荣耀赵明 “Diss” 5G 手机;甲骨文创始人埃里森:Uber 一文不值;Chrome 77 发布 | 极客头条...
- js检测是否安装java_js判断当前浏览器是否是源生app的webview
- mysql回表慢sql_MySQL 的覆盖索引与回表
- django drf 改变retrive的pk查询字段
- 2019年税收分类编码_您如何在2019年学习编码
- Latex符号与公式集合
- CMMI3过程改进项目计划
- vscode连接服务器不用每次都输入密码
- Codeforces 1215 A. Yellow Cards
- 远程驾驶一般怎么实现
- Uwsgi+Nginx+Django部署
- attention机制、self-attention、channel attention、spatial attention、multi-head attention、transformer
- poj1273 Drainage Ditches
热门文章
- post 传递参数中包含 html 代码解决办法,js加密,.net解密
- 软工网络15团队作业4-DAY5
- JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() 有什么区别?
- 基于springcloud的声明式客户端FeignClients方式的httpserver访问配置
- 第一篇 多线程笔试面试题汇总(转)
- 复选框的遍历和选中设置
- Python一行代码
- 技能树 Web前端/php/JavaWeb/数据库
- centos6.5 mysql5.6主从复制
- RLE压缩及优化--图片压缩