Top K 算法详解
来源:互联网 发布:手机淘宝买家信用等级 编辑:程序博客网 时间:2024/05/19 04:29
Top K 算法详解
(2013-09-27 20:56:29)应用场景:
必备知识:
什么是哈希表?
哈希表的做法其实很简单,就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。
问题解析:
要统计最热门查询,首先就是要统计每个Query出现的次数,然后根据统计结果,找出Top 10。所以我们可以基于这个思路分两步来设计该算法。
即,此问题的解决分为以下俩个步骤:
第一步:Query统计
但是题目中有明确要求,那就是内存不能超过1G,一千万条记录,每条记录是255Byte,很显然要占据2.375G内存,这个条件就不满足要求了。
让我们回忆一下数据结构课程上的内容,当数据量比较大而且内存无法装下的时候,我们可以采用外排序的方法来进行排序,这里我们可以采用归并排序,因为归并排序有一个比较好的时间复杂度O(NlgN)。
排完序之后我们再对已经有序的Query文件进行遍历,统计每个Query出现的次数,再次写入文件中。
综合分析一下,排序的时间复杂度是O(NlgN),而遍历的时间复杂度是O(N),因此该算法的总体时间复杂度就是O(N+NlgN)=O(NlgN)。
思想与上述算法二一致,只是在算法三,我们采用了最小堆这种数据结构代替数组,把查找目标元素的时间复杂度有O(K)降到了O(logK)。
总结:
至此,算法就完全结束了,经过上述第一步、先用Hash表统计每个Query出现的次数,O(N);然后第二步、采用堆数据结构找出Top 10,N*O(logK)。所以,我们最终的时间复杂度是:O(N) + N'*O(logK)。(N为1000万,N’为300万)。
博客地址:http://blog.sina.com.cn/s/blog_4a80dbb00101ealh.html
- Top K 算法详解
- Top K 算法详解
- Top K 算法详解
- Top K 算法详解
- Top K 算法详解
- Top K 算法详解
- Top K 算法详解
- Top K 算法详解
- Top K 算法详解
- Top K 算法详解
- Top K 算法详解
- TOP –K算法详解
- Top K 算法
- Top K算法
- mapreduce Top K算法
- 典型Top K算法
- Top k 算法
- Top K算法
- Android图片压缩(质量压缩和尺寸压缩)
- js金额两位数
- 原来代码这么写,搜素引擎会更中意!
- CRM开发要点(四)
- iOS开发常用Xcode插件工具
- Top K 算法详解
- html调用oc
- 如何提高网站收录量
- Eclipse的SVN插件与本地svn客户端关联详解【测试好用】
- CodeForces-468A-24 Game
- 类的成员函数作为线程入口函数
- Android中的权限-中英对照
- Android 图片压缩也即生成缩略图方法
- 在Android中加入和使用Realm(速度更快,更先进加密性更好)