当前位置:网站首页>请问海量数据如何去取最大的K个
请问海量数据如何去取最大的K个
2022-06-30 20:00:00 【兔云程序】
这可能是形而上学很有深度一个算法题目,因为这个会的人能天马行空设计出绝妙的算法,不会的人可能连题目都无处下手。海量数据top K问题,在互联网大厂的产品中到处体现出来,比如微信的计步软件,统计出K名,然后进行排序。
当然类似的题目还有有一亿个浮点数,如何找出其中最大的10000个。这里面其实涉及代码技能就是内存的处理以及数据的去重优化,把本来需要占大量内存空间的海量数据通过各种方法处理出来。以下有几种方法,包括最蠢和最明智的方案,在面试中可以供你吹水。
内存允许的情况下,直接全部排序
这可能是最直接简单粗暴的方法,但是你懂的,我们的前提是海量数据,这个方法是一种方案,但是肯定不靠谱的。全部排序从大到小排序之后,我们直接取头部的K个,方法需要消耗大量内存并且不高效,做了很多无用功,不建议使用。当然如果在口谈面试中,你大脑短路的时候可以先提出这个。
内存允许的情况下,分治法
其实分治的思想里就包括快排和归并排序。思想先分都是将数据不断的分成N份,治是找到每份数据中最大的K个数。
最小堆法(也叫局部淘汰法)
一种局部淘汰法。先读取前K个数,建立一个最小堆。然后将剩余的所有数字依次与最小堆的堆顶进行比较,如果小于或等于堆顶数据,则继续比较下一个;否则,删除堆顶元素,并将新数据插入堆中,重新调整最小堆。当遍历完全部数据后,最小堆中的数据即为最大的K个数。
时间复杂度为O(n+m^2)(其中m为K,比如10000)
边栏推荐
- Jerry's touch key recognition process [chapter]
- Why should offline stores do new retail?
- CV+Deep Learning——网络架构Pytorch复现系列——basenets(BackBones)(一)
- The Commission is so high that everyone can participate in the new programmer's partner plan
- 大神详解开源 BUFF 增益攻略丨直播
- PM这样汇报工作,老板心甘情愿给你加薪
- Primary school, session 3 - afternoon: Web_ sessionlfi
- pytorch实现FLOPs和Params的计算
- Summary of operating system interview questions (updated from time to time)
- Openfire在使用MySQL数据库后的中文乱码问题解决
猜你喜欢

SQL优化
Django上传excel表格并将数据写入数据库的详细步骤

杰理之触摸按键识别流程【篇】

Torchdrug -- drug attribute prediction

新出生的机器狗,打滚1小时后自己掌握走路,吴恩达开山大弟子最新成果

文件包含&条件竞争

Exness: the final value of US GDP unexpectedly accelerated to shrink by 1.6%
![Jerry's touch key recognition process [chapter]](/img/ec/25d2d6fd26571e4fb642129a4eee1b.png)
Jerry's touch key recognition process [chapter]

神经网络入门(上)
![Halcon knowledge: check the measurement objects [1]](/img/0a/3a12e281fcb201d8d11b25dac4145a.png)
Halcon knowledge: check the measurement objects [1]
随机推荐
Introduction to neural network (Part 1)
Web主机iptables防火墙安全脚本
【ICCV 2019】特征超分检测:Towards Precise Supervision of Feature Super-Resolution for Small Object Detection
Informatics Olympiad 1362: family problems
Cv+deep learning network architecture pytoch recurrence series basenets (backbones) (I)
CADD course learning (1) -- basic knowledge of drug design
信息学奥赛一本通 1362:家庭问题(family)
建立自己的网站(20)
网上炒股开户安全嘛!?
Qt:qaxobject operation Excel
Jerry's determination of detection sensitivity level [chapter]
Torchdrug -- drug attribute prediction
[try to hack] windows system account security
Exness: liquidity series - liquidity cleaning and reversal, decision interval
【ICLR 2021】半监督目标检测:Unbiased Teacher For Semi-Supervised Object Detection
QT qstringlist usage
Originpro 2021 with installation tutorial
Filebeat custom indexes and fields
Why should offline stores do new retail?
pytorch实现FLOPs和Params的计算