我正在做一个大项目,我不会在这里总结它,但是项目的这一部分是要获取一个非常大的文本文档(最少大约 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/