@Author:Runsen

上次介绍了堆排序,这次介绍堆排序常见的应用场景TopK问题和。

利用堆求TopK问题

TopK问题是一个堆排序典型的应用场景。

题目是这样的:假设,我们想在大量的数据,如 100 亿个整型数据中,找到值最大的 K 个元素,K 小于 10000。对此,你会怎么做呢?

对标的是Leetcode第215题:数组中的第K个最大元素。

具体链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

示例 1:输入: [3,2,1,5,6,4] 和 k = 2
输出: 5
示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
输出: 4

经典的TopK问题还有:最大(小) K 个数、前 K 个高频元素、第 K 个最大(小)元素

对此TopK问题本质上是一个排序问题,排序算法一共有十个,这个还有很多排序算法没有介绍过。

至于为什么TopK问题最佳的答案是堆排序?其实在空间和时间的复杂度来考量,虽说快排是最好的排序算法,但是对于100亿个元素从大到小排序,然后输出前 K 个元素值。

可是&#x

八十四、堆排序解决TopK问题相关推荐

  1. DockOne微信分享(八十四):Docker在B站的实施之路

    本文讲的是DockOne微信分享(八十四):Docker在B站的实施之路[编者的话]B站一直在关注Docker的发展,去年成功在核心SLB(Tengine)集群上实施了Docker.今年我们对比了各种 ...

  2. 八十四、Python | Leetcode回溯算法系列

    @Author:Runsen @Date:2020/7/7 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  3. JavaScript学习(八十四)—变量

    JavaScript学习(八十四)-变量 一.什么是变量? 白话: 变量就是一个装东西的盒子 通俗:变量是用于存放数据的容器. 我们通过 变量名 获取数据,甚至数据可以修改. 二.变量在内存中的存储 ...

  4. 第八十四章 Caché 函数大全 $ZDATEH 函数

    文章目录 第八十四章 Caché 函数大全 $ZDATEH 函数 大纲 参数 描述 简单的$ZDATEH格式 可自定义的$ZDATEH格式 参数 date dformat dformat Defaul ...

  5. 博聊论坛:每日会员免费体育竞猜有奖活动(7月20日第八十四期)

    活动开始时间:7月20日 第八十四期) 活动介绍: http://www.boliao1.com/forum.php?mod=viewthread&tid=148560&extra=p ...

  6. (八十四):A Hierarchical Network for Abstractive Meeting Summarization with Cross-Domain Pretraining

    (八十四):A Hierarchical Network for Abstractive Meeting Summarization with Cross-Domain Pretraining Abs ...

  7. 教你用堆排序解决topk问题

    教你用堆排序解决topk问题,同时学会堆排序. 1.什么是Top K问题? 找到数组中最大(最小)的K个数,例如7,6,3,5,2,Top3 的意思就是 找出最小的三个数即为:3,5,2. 方法1:对 ...

  8. 武汉坚守第八十四天——结束之后的结束,习惯之下的复写

    结束之后的结束,习惯之下的复写! 本来昨天就算是结束了,今天看到了一些内容,再写一点,一个是武汉出行的困难,还是到处都是,特殊的身份,特殊的形式,只能靠时间来推进,不过,武汉市已经有一些操作了,比如开 ...

  9. 【数据结构】用堆排序解决TOPK问题

    题目名称  TOPK问题 目录 题目名称  TOPK问题 1.题目 2.题目分析 3.题目答案 4.题目知识点 4.1TOPK 4.2代码分析 推荐阅读顺序: 1.题目->3.答案->2. ...

最新文章

  1. 用例子来彻底搞明白Virtual 和 非 virtual(C#)
  2. java控制台输入空格输出后不显示_为撒我加上输入输出流的代码后控制台反而什么都不显示了呢?...
  3. java语言修饰符$_Java语言中的修饰符
  4. html 调入网页,HTML 文件怎么从外部调入 HTML 模板(如头部,页尾这些公共的部分)?...
  5. 大型网站系统架构系列:负载均衡详解(一)
  6. 深入理解css优先级
  7. Eclipse启动Tomcat时45秒超时的解决方法
  8. iPhone 13 的十大爆料:“十三”到底“香不香”?
  9. 如何自学python-作为一个Python自学者,怎样学好Python?
  10. 深入C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程总结
  11. 代码笔记——Toast显示文本,图片,图文
  12. 索尼爱立信k510驱动_未来人工智能驱动的电信网络:爱立信案例研究
  13. 部署war包到tomcat根目录
  14. 网络计算机显示器接口,电脑显示器常见的4种接口:VGA、DVI、HDMI、DP接口
  15. Linux 网易云 deb 包下载 安装
  16. windowsXP操作系统的基本功能
  17. TTL与非门电路的工作原理
  18. 免费申请国外免费域名保姆级教程
  19. 个人ID的搜索引擎结果分析与联想
  20. 计算机课搞事情检讨,【热门】作弊检讨书范文10篇

热门文章

  1. vim 插件_你不得不知道的适用于程序员的VIM插件
  2. Openwrt按键检测分析-窥探Linux内核与用户空间通讯机制netlink使用
  3. 计算机供用户使用的内存区域,计算机应用复习资料
  4. oracle 12c undo,Oracle 12C新特性-临时UNDO段(Temporary Undo Segments) | 信春哥,系统稳,闭眼上线不回滚!...
  5. 正则表达式 php 模板,PHP中正则表达式回顾(4)--编写一个非常简单而且山寨的smarty模板引擎...
  6. 可信计算 沈昌祥_沈昌祥:用可信计算筑牢网络安全
  7. MongoDB 基础教程CURD帮助类
  8. eclipse 在 Linux中常用命令,持续更新....
  9. C#中的DataSet添加DataTable问题
  10. Ubuntu 下一个 vim 建立python 周围环境 构造