原来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大的数字相关推荐

  1. 无序数组求第k大的数 python_整数无序数组求第K大数

    import java.util.Scanner; /** * 类似与求第k小的问题 * 求第k大相当于求第n-k+1小,n为数组长度 * * 著名的BFPRT算法可保证在线性时间内得到结果. * h ...

  2. 算法题 求第K大的数

    题目描述:在乱序数组中求第K大的数 思路:立刻想到的是当然先排序然后取数.但是提问者明显不是想这么解.上网查了下原来是快排思路. 利用快排的思想,从数组arr中随机找出一个元素X,把数组分成两部分ar ...

  3. 堆实战(动态数据流求top k大元素,动态数据流求中位数)

    动态数据集合中求top k大元素 第1大,第2大 ...第k大 k是这群体里最小的所以要建立个小顶堆 只需要维护一个大小为k的小顶堆 即可当来的元素(newCome)> 堆顶元素(smallTo ...

  4. 树状数组与离散化与求第K大模板

    树状数组模板: //Cnt为数组的界 //cnt[i]为编号或者数值上小于id的数量 void Update(LL Id) {while(Id<=Cnt){cnt[Id]++;Id+=lowbi ...

  5. 两个排序数组中求第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] , ...

  6. 单峰数组求第k大算法

    单峰数组实际上可以看成两个有序的数组,这个问题就转变成了两个有序数组求第k大. 容易想到的算法是对这两个数组进行归并,生成一个新的有序数组,求出第k大之后就可以立刻停止,复杂度是O(k)的. 但是还有 ...

  7. 在N个数中查找第K大的数字(Top K问题)

    在N个乱序数字中查找第k大的数字,时间复杂度可以减小至 O(N*logN) O(N) O(1) O(2) 答案:B 所谓"第(前)k大数问题"指的是在长度为n(n>=k)的乱 ...

  8. 在N个乱序数字中查找第k大的数字

    在N个乱序数字中查找第k大的数字 在N个乱序数字中查找第k大的数字,时间复杂度可以减小至 O(N*logN) O(N) O(1) O(2) 答案:B 所谓"第(前)k大数问题"指的 ...

  9. 【算法】在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 ...

最新文章

  1. GEO数据挖掘(3)-芯片基础知识
  2. R语言数据包自带数据集之mtcars数据集字段解释、数据导入实战
  3. python拟合威布尔参数_威布尔分布拟合数据
  4. 字符串中全角半角之间的转换
  5. scala 线性回归_Scala的特征线性化
  6. SpringBoot集成Shiro进行权限控制和管理
  7. python生成正态分布数据_python 生成正态分布数据,并绘图和解析
  8. 荣耀赵明 “Diss” 5G 手机;甲骨文创始人埃里森:Uber 一文不值;Chrome 77 发布 | 极客头条...
  9. js检测是否安装java_js判断当前浏览器是否是源生app的webview
  10. mysql回表慢sql_MySQL 的覆盖索引与回表
  11. django drf 改变retrive的pk查询字段
  12. 2019年税收分类编码_您如何在2019年学习编码
  13. Latex符号与公式集合
  14. CMMI3过程改进项目计划
  15. vscode连接服务器不用每次都输入密码
  16. Codeforces 1215 A. Yellow Cards
  17. 远程驾驶一般怎么实现
  18. Uwsgi+Nginx+Django部署
  19. attention机制、self-attention、channel attention、spatial attention、multi-head attention、transformer
  20. poj1273 Drainage Ditches

热门文章

  1. post 传递参数中包含 html 代码解决办法,js加密,.net解密
  2. 软工网络15团队作业4-DAY5
  3. JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() 有什么区别?
  4. 基于springcloud的声明式客户端FeignClients方式的httpserver访问配置
  5. 第一篇 多线程笔试面试题汇总(转)
  6. 复选框的遍历和选中设置
  7. Python一行代码
  8. 技能树 Web前端/php/JavaWeb/数据库
  9. centos6.5 mysql5.6主从复制
  10. RLE压缩及优化--图片压缩