如何将n个有序大文件,有序的存入一个磁盘?
通常会给定一个内存空间(如2G),但是每个有序大文件都在10G以上,所以无法全部读取到内存中进行合并。
这问题是一个归并排序的运用!
为了方便解说,假设问题中的n=2,并且文件为升序。并设文件一为file_one,文件二为file_two。文件中的数据用1,2,3,4…来表示
步骤如下:
一、拿到file_one1放入内存。
二、拿到file_two1与file_one1进行比较。
①若file_one1<file_two1,则拿到file_one2与file_two1进行对比,直到拿到file_one中的数据大于file_two1则跳到第②步,或者拿到的数据完全占满2G内存,则存入磁盘。继续从一步骤开始。
②若file_one1>file_two1,则拿到file_two2与file_one1进行对比,直到拿到file_two中的数据大于file_one1则跳到第①步,或者拿到的数据完全占满2G内存,则存入磁盘。继续从一步骤开始。
步骤有些乱,不过这个问题不难,凭自己悟吧,哈哈哈。