我有50个大约10 GB的文本文件。我必须对这些数字进行排序。我的第一个想法是使用apply Merge Sort,即单独对每个文件进行排序并合并它们。我正在使用数组来加载这些数字。当我运行应用程序时,我的程序由于内存不足而崩溃。所以我的问题是:
任何帮助将不胜感激。
答案 0 :(得分:1)
如果数字最多只能达到7位且为整数,那么您可以使用Counting Sort。
你只需要大约40Mb的内存,存储1000万个4字节整数,计算从0-9,999,999开始计算每个数字的数量。如果你必须处理超过21.4亿个相同数量的重复项的可能性,那么你可以使用64位整数。将数组初始化为零,然后一次读取一个数字,更新每个数字。然后,一旦完成,您可以根据计数生成排序列表。