请教一个external sort的问题# JobHunting - 待字闺中
c*n
1 楼
disk已经存满,里面有1000个文件,每个文件有1000个数,内存里面只能存1000个数。
问题是把所有数排序后,放回这1000个文件里面,要求inplace,不能create新文件作为缓存。
我能想到的办法是从文件1读一个1000个数入内存建一个max heap,然后遍历其他999个
文件,出heap的数依次写入文件1-999,最后把最小的1000个数排序写入文件1000。重
复这个过程,把剩下的文件都过一遍。
请问有更好的办法吗?谢谢。
问题是把所有数排序后,放回这1000个文件里面,要求inplace,不能create新文件作为缓存。
我能想到的办法是从文件1读一个1000个数入内存建一个max heap,然后遍历其他999个
文件,出heap的数依次写入文件1-999,最后把最小的1000个数排序写入文件1000。重
复这个过程,把剩下的文件都过一遍。
请问有更好的办法吗?谢谢。