algorithm - 大量数字的最有效排序算法

标签 algorithm list sorting performance numbers

我正在做一个大项目,我不会在这里总结它,但是项目的这一部分是要获取一个非常大的文本文档(最少大约 50,000 字(不唯一)),并且按照最常用到最少使用的顺序输出每个唯一的单词(可能前三个是“a”、“an”和“the”)。

我的问题当然是,最好的排序算法是什么?我正在阅读计数排序,我喜欢它,但我担心的是与唯一单词的数量相比,值的范围会太大。

有什么建议吗?

最佳答案

首先,你需要一个word->count的map。 50,000 个单词并不多——它很容易被内存填满,所以没有什么可担心的。在 C++ 中,您可以使用标准的 STL std::map。

然后,一旦你有了 map ,你就可以将所有 map 键复制到一个向量中。

然后,使用自定义比较运算符对该向量进行排序:不是比较单词,而是比较 map 中的计数。 (不要担心特定的排序算法 - 你的数组没有那么大,所以任何标准库排序都适合你。)

关于algorithm - 大量数字的最有效排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/954181/

相关文章:

c++ - 如何连接几张 map ?

使用 DFS 计算 SCC

python - 基于循环索引在 Python 中对列表求和

vb.net - Vb,排序列表

sorting - 在 SSH 中压缩文件(zip、tar 等)时,什么决定了压缩文件的 'sort order'?

algorithm - 理解归并排序的递归

python - 我的 Codekata 解决方案提供了正确的解决方案,但在最终测试用例期间遇到了性能问题

python - 包含多个条件的列表

java - 在 Java 中,检查列表是否包含另一个列表中的项目的最快方法是什么,两个列表是否属于同一类型?

python - 同时对一维数组和二维数组(按列)进行排序