大文件排序问题
问题假设有256M内存,要对一个有10G数据文件进行排序
思路: 先分治,再归并。
步骤1:把文件根据内存大小进行拆分为若干小文件,具体大小保证小于排序所需要的内存,并排序。
步骤2:合并有序小文件。
如何合并呢? 取每个文件的第一个元素进行比较,最小值就是所有元素中最小的,放到大文件。下一轮再拿第二个,以此类推...
步骤2其实是N个数找最小值问题,原始方法时间复杂度较高,可以用更优的算法替换。
问题假设有256M内存,要对一个有10G数据文件进行排序
思路: 先分治,再归并。
步骤1:把文件根据内存大小进行拆分为若干小文件,具体大小保证小于排序所需要的内存,并排序。
步骤2:合并有序小文件。
如何合并呢? 取每个文件的第一个元素进行比较,最小值就是所有元素中最小的,放到大文件。下一轮再拿第二个,以此类推...
步骤2其实是N个数找最小值问题,原始方法时间复杂度较高,可以用更优的算法替换。