【中等】如何在 10 亿个数据中找到最大的 1 万个?⭐⭐⭐
构建容量大小为 1 万的堆,每次从 10 亿数据中读 1 万条数据,写入最小堆,循环直至读完所有数据。最终,还留存在最小堆中的数据就是 TOP 10000
【中等】有几台机器存储着几亿的淘宝搜索日志,假设你只有一台 2g 的电脑,如何选出搜索热度最高的十个关键词?⭐⭐
核心思想:分而治之 + 哈希分桶 + 堆排序
第一步:哈希分桶(分散数据)
- 操作:逐行读取几亿条日志,对每个搜索词计算哈希值,然后取模 N(例如 N=200),将记录追加写入对应的临时文件(
part_0.txt到part_199.txt)。 - 目的:相同的关键词一定会进入同一个临时文件,且每个文件大小可控(如几十到几百 MB)。
- 记忆点:“哈希取模分文件,同词同桶不乱窜。”
2026/8/9大约 11 分钟