题目描述

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

思路分析

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

总结

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

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

  1. 希尔排序算法(思路分析) [数据结构][Java]

    希尔排序算法(思路分析) 希尔排序也称之为: 缩小增量排序 希尔排序提出的背景: 因为简单插入排序中存在一些问题( 这里我们以升序排序为例 ): 当我们要待插入的数值比较小时后移的次数明显增多,对效率 ...

  2. 冒泡排序算法(思路分析) [数据结构][Java]

    冒泡排序算法(思路分析) 基本介绍: 冒泡排序(Bubble Sorting)的基本思想是: 通过对 "待排序序列" 从前向后一次比较相邻元素的值,若发现逆序则交换,使值较大的元素 ...

  3. 在1000万整数中找到前100个最大的数 算法

    这一段时间写毕业设计,遇到一些大数据的情况,想起之前和同学讨论的最优算法,写一下相关思路. 在1000万整数中寻找最大的100个数,最优的算法是建一个大小为100的小顶堆(堆排序需要建立完全二叉树), ...

  4. 快速排序算法思路分析和C++源代码(递归和非递归)

    快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试喜欢考这个. 快速排序是C.R.A.Hoar ...

  5. 找到100亿个URL中重复的URL及搜索词汇的TopK问题

    题目:有一个包含100亿个url的大文件,假设每个url占用64B,请找出其中所有重复的url 补充问题:某搜索公司一天的用户搜索词汇是海量的,请设计一种求出每天热门的top 100 词汇的可行方法 ...

  6. 10亿数据找出前100大的数据(网易大数据面试算法题)

    精华在评论区.... 当时去面试的时候现场现写,憋了将近一个小时,用递归实现了,估计问题很多,不是人家怎么可能不要我,哈哈哈,开个玩笑: 思路就是新建一个长度为100数组array1,把前100个元素 ...

  7. 百度前CTO刘建国任搜索网站爱帮网CEO

    百度前CTO刘建国任搜索网站爱帮网CEO http://www.sina.com.cn 2007年11月16日 04:23  新浪科技 新浪科技讯 11月16日凌晨,据消息人士透露,百度前CTO刘建国 ...

  8. 百度搜索惊雷算法讲解

    作为国内最大的互联网搜索引擎"百度",针对扰乱破坏搜索环境的快排手段进行了一波针对性更新算法打击,为维护广大搜索用户和站点权益,促进网络资源搜索生态的良性发展,于2021年1月中旬 ...

  9. php 分词搜索算法,分词算法(利用百度搜索分词算法布局关键词,告别堆砌)...

    曾经在学习SEO撰写TDK的时候,老师给我们举了一个例子:月饼批发_提供2014月饼批发团购价格-XX月饼批发厂家.当时还不明白标题里包含了百度中文分析算法技术.在源源不断的学习中,才后知后觉这就是传 ...

最新文章

  1. cannot find module 'cordova-common'
  2. 【杂谈】从学员到专栏作者、讲师,我在有三AI学习与名利双收的故事
  3. mybatis实现多对多
  4. 把python37添加到环境变量配置_关于在win 10上成功创建一个Django项目时遇到django-admin的手动配置环境变量问题。...
  5. WordPress插入图片无法居中的解决方法
  6. Fliptile【搜索】
  7. 多线程(thread)+进程(Process)
  8. relu函数_激活函数解析:Sigmoid, tanh, Softmax, ReLU, Leaky ReLU
  9. mac windows蓝牙问题
  10. nginx常见配置详解
  11. 路由器玩机---老毛子设置AP与主路由设置
  12. Ghostscript沙箱绕过(CVE-2021-3781)分析
  13. Python eval 函数使用报错 name 'false' is not defined 已解决
  14. html图标命名,html 命名规范
  15. CAD异常闪退的原因
  16. 测试打印 lua 的 _G 所有显示的字段内容
  17. 三相电检测电路c语言,三相电缺相检测电路
  18. 商业银行业务培训总结
  19. sql group by 后取最后一条数据
  20. 入门PCB设计AD9学习笔记9-向工厂提供的光绘文件

热门文章

  1. html5飞机大战小游戏开发,html5 飞机大战
  2. 详解智能驾驶的功能与场景体系
  3. 新东方张晓楠:如何提高英语听力水平
  4. Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:()
  5. RFCN论文阅读笔记
  6. amp jsp空格 nps_HTML/CSS中的空格处理\_如何保留页面中的空格【转】
  7. Arduino(二)——数码管显示(不同程序)
  8. FME支持的SketchUp格式
  9. TFT LCD-笔记1
  10. 用友t 服务器系统及配置说明,用友T+软件系统操作手册