百度前100个热门搜索词汇算法思路分析

题目描述

某搜索引擎,就比如百度,每天的用户搜索词汇是百亿数据量,请设计一种算法,求出每天热门Top100词汇。

思路分析

首先,还是基于哈希分流的思想,用哈希函数,将问题映射到N台分布式计算机上统计各个搜索词频。
假设1000台分布式计算机,那么,此时,原始的数据就平均分成了1000份,并且,因为哈希函数的性质,相同的数据肯定会被分配到相同的分布式计算机上,因此,这1000台各自统计的数据都是正确无误的,相同词汇不可能出现在两台分布式计算机上。
然后,在各自的分布式计算机上,维护一个大根堆,堆顶就是出现频次最高的词汇。
然后,取出每一个大根堆的堆顶,再组成一个总的大根堆,此时,这个总大根堆的堆顶就是当天词频第一的,然后,词频第一的词出总堆,同时他也从他所在的分布式堆顶出堆,然后,这个词汇是从哪一个分布式上的大根堆出来的,就让那个分布式的新堆顶入总大根堆,然后,再从总大根堆选出第二高频词,依次循环上述步骤,选出前100个。

总结

说白了,先用哈希分流,挨个统计,然后,把每个的最大值,再放入总的一起比较出最大值,然后依次更新总的堆。因为是堆结构,因此出堆调整堆的时间复杂度都是O(logn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值