c++ - 算法:计算单词列表频率的更好方法

标签 c++ performance algorithm data-structures

这个问题实际上很简单,但我想在开始编码之前先听听一些想法。给定一个文件,每行都有一个单词,计算出现频率最高的 n 个数字。

不幸的是,我首先想到的是使用 std::map。我知道 C++ 的同行们会说 unordered_map 非常合理。

我想知道是否可以在算法方面添加任何内容,或者这基本上只是“谁选择最佳数据结构谁获胜”类型的问题。我在互联网上搜索过它并阅读了哈希表和优先级队列可能会提供一个运行时间为 O(n) 的算法,但是我认为实现起来会很复杂

有什么想法吗?

最佳答案

用于此任务的最佳数据结构是 Trie:

http://en.wikipedia.org/wiki/Trie

在计算字符串方面,它将胜过哈希表。

关于c++ - 算法:计算单词列表频率的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10200806/

相关文章:

algorithm - 用于更新值和查询过去某个时间值状态的数据结构

c++ - 使用位掩码重构整数

C++ 访问 vector 的 vector 出现段错误

c++ - 找到最小的整数,其数字的平方和与给定的数字相加

PostgreSQL 数据库大小不合理

sql - 查找分组值,然后连接行

C# 数据包发送到 c++ winsockets

c++ - 如何提高otsu阈值输出

jQuery 性能 : css vs animation methods

algorithm - Dijkstra 算法 : is my implementation flawed?