如何在不同的文件中对多GB的数据进行排序?

时间:2017-04-28 07:37:32

标签: algorithm sorting out-of-memory mergesort

我有50个大约10 GB的文本文件。我必须对这些数字进行排序。我的第一个想法是使用apply Merge Sort,即单独对每个文件进行排序并合并它们。我正在使用数组来加载这些数字。当我运行应用程序时,我的程序由于内存不足而崩溃。所以我的问题是:

  1. 使用哪种数据结构?
  2. 如何管理记忆?
  3. 合并排序是否正确?如果不是,请建议方式。
  4. 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果数字最多只能达到7位且为整数,那么您可以使用Counting Sort

你只需要大约40Mb的内存,存储1000万个4字节整数,计算从0-9,999,999开始计算每个数字的数量。如果你必须处理超过21.4亿个相同数量的重复项的可能性,那么你可以使用64位整数。将数组初始化为零,然后一次读取一个数字,更新每个数字。然后,一旦完成,您可以根据计数生成排序列表。