栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

刷题 | top k问题

刷题 | top k问题

包含排序

sort--排全部

冒泡等--排k个 n*k

快排--nlogn的复杂度,但是是在平均的情况下,最糟糕的情况依然是n方


不含排序

随机选择--用快排的思想,但只递归一边 是On(哼哼,某厂面试官还...)

堆--以最小k个为例,先把前k个 元素建立一个大顶堆(On),然后从k+1开始遍历,如果小于堆顶则替换,并下沉,最糟糕的复杂度是nlogk


大数据的情况 100亿找1000

堆ok

mapreduce

1.将100亿个数据分为1000个大分区,每个区1000万个数据
2.每个大分区再细分成100个小分区。总共就有1000*100=10万个分区
3.计算每个小分区上最大的1000个数
4.合并每个大分区的100个小分区,得到1000个大分区,找出每个大分区的前1000个数。
5.合并大分区,得到总的区,找出前1000

hash(如果重复度很高)

1. 去重  (附常识 | hashset去重_tuuzkiii_Tuu的博客-CSDN博客
2. 用堆

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/762351.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号