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