如何对长度可变的句子进行排序?

时间:2016-04-29 14:28:08

标签: algorithm sorting ranking

假设我有一个多行字符串的文件,如何按字典顺序对字符串行进行排名?

详细信息:

  • 文件大小约为 32GB ytes;
  • 每行可以被视为一个句子,其中包含由空格分隔的可变数量的单词,即每行的长度不固定;
  • 每个单词仅包含ASCII字符;
  • 我只有 8 GB 的内存但无限的磁盘空间;

我能弄清楚的是外部合并排序,对于这个指定的问题有没有更好的想法?

1 个答案:

答案 0 :(得分:2)

文件大小和内存之间的差异并不大,因此我建议根据第一个字母将文件拆分为更小的文件 - 或者如果不够,请使用前两个字母。

然后你可以用快速排序对它们进行排序并保存,然后将它们分类,你可以将它们重新组合在一起。

它仍然是O(N)I / O操作和O(n * log(N))CPU操作。

PS:外部合并排序也很好。