<分区>
我知道这个问题已经在论坛上被问过几次了,我没有找到任何可以被认为是最合适的解决方案的“已标记”答案 - 所以再次询问:
我们从书中得到了非常大的文本,所有这些文本都无法容纳在内存中。我们需要找到文本中出现频率最高的前 10 个词。执行此操作的最佳(时间和空间)方式是什么?
我的想法:
将文件分成k大小的 block (这样每个 block 都可以存储在内存中)。现在,对每个 block 执行外部排序。一旦我们在磁盘上有了 (N/k)- 排序的文件(假设 N 是书中文本的总大小)——我不确定我应该如何继续才能从中获得前 10 个元素k 排序数组。
另外,如果有不同的思路,欢迎提出。