归并排序

eason_chen 写道
icewubin 写道
sdh5724 写道
100亿行, 你觉得在一个机器能归并出来么。。你的IO交换要达到多少?

这有什么问题么?两次IO就结束了,有什么困难的。

上个月我还用Java写了个1千万行的归并排序,每行数据量不是非常大,总共1.7G,一般的台式机5分钟跑完。


可否把代码贴出来学习一下...


那是给兴业银行做的项目,不能随便上代码。而且实际代码做的是比对差异,排序只是为了比对差异做基础而已。

我说一下大概思路吧:
1.因为我机器的JVM配的不大,所以测试的时候每5万行记录先做一次排序并写入一个小文件,利用java.util.TreeSet。

2.然后再对200个文件做归并,先从200个小文件中取出第一个元素(就是一行),再次放入一个java.util.TreeSet,然后移除first,同时判断first移走的那个元素来自于哪个文件,然后从那个文件再取一个元素,然后再次移走第一个元素。。。循环

直到每个文件都为空且TreeSet中为空即可。

你可能感兴趣的:(归并排序)