我有30 gb文件,这是只有1-1000个数字重复。我想知道如何对该文件进行排序,您需要首先在内存中加载该文件。
我已经通过了其他链接,但不同意的点,排序它多块文件,并将它保存在临时文件。正如我所相信的,在进程结束时,我将有两个大文件(每个15 GB )来排序。我不能加载每一个合并和排序。
有什么建议吗?
发布于 2015-10-13 19:41:13
如果所有的值都在1.1000范围内,那么您可以使用一个简单的计数排序版本来完成这个任务。
counters[1000]
数组(如果数组是基于零的,则为1001),全部初始化为零。n
读取值counters[n]
时,读取该文件。counters
,为每个索引n
编写n
的counters[n]
副本以输出。例如,如果counters[100] == 5
然后编写100
以输出5
时间。您不需要将整个文件保存在内存中。您只需计算每个值在文件中出现的次数。这足以创建原始文件的排序版本。
https://stackoverflow.com/questions/33115898
复制相似问题