大文件小内存进行排序处理

1.将大文件分成N个小文件

2.对N个小文件逐一进行排序,并重新写入文件

3.根据归并排序对N路进行排序。 如果限制小可以先进行小一点的M路进行排序,如先对1-8进行8路归并排序合成一个N1文件,再对N1,N2,N3进行归并排序

举例:

文件1:3,6,9
文件2:2,4,8
文件3:1,5,7

第一回合:
文件1的最小值:3 , 排在文件1的第1行
文件2的最小值:2,排在文件2的第1行
文件3的最小值:1,排在文件3的第1行
那么,这3个文件中的最小值是:min(1,2,3) = 1
也就是说,最终大文件的当前最小值,是文件1、2、3的当前最小值的最小值,绕么?
上面拿出了最小值1,写入大文件.

第二回合:
文件1的最小值:3 , 排在文件1的第1行
文件2的最小值:2,排在文件2的第1行
文件3的最小值:5,排在文件3的第2行
那么,这3个文件中的最小值是:min(5,2,3) = 2
将2写入大文件.

依次进行写入文件,并得到最后结果

 

参考:https://www.cnblogs.com/foreach-break/p/external_sort.html