【发布时间】:2013-07-06 16:35:21
【问题描述】:
我知道这已经在论坛上被问过几次,我没有找到任何可以被认为是最合适的解决方案的“标记”答案 - 所以再次询问:
我们从书中得到了一个非常大的文本,所有这些都无法放入记忆中。我们需要找到文本中出现频率最高的 10 个单词。执行此操作的最佳(时间和空间)方式是什么?
我的想法:
将文件分成 k 个大小的块(这样每个块都可以存储在内存中)。现在,对每个块执行外部排序。一旦我们在磁盘上有 (N/k)- 排序的文件(假设 N 是书中文本的总大小) - 我不知道应该如何继续,以便我可以从k 排序数组。
另外,如果有不同的思路,请提出建议。
【问题讨论】:
-
到目前为止您尝试过什么?你都有些什么想法呢?您不应该在没有先思考和努力的情况下在这里发布家庭作业问题。
-
每当你发现自己迷路时,排序一条出路! (:
-
我确实看过那里发布的解决方案,我正在寻找更多的算法解决方案,而不是 linux 'sort -u' kinda hack。我已经考虑过了,并在这个问题上发表了我的想法。
标签: algorithm data-structures hashmap heap hashtable