📜  使用较小的RAM对较大的文件进行排序

📅  最后修改于: 2021-06-28 15:29:10             🧑  作者: Mango

假设我们必须对一个1GB的随机整数文件进行排序,可用的RAM大小为200 Mb,将如何完成?

最简单的方法是使用外部排序
我们将源文件分为大小等于RAM大小的临时文件,然后首先对这些文件进行排序。
假设1GB = 1024MB,那么我们按照以下步骤操作。

  1. 将源文件分为5个小临时文件,每个文件的大小为200MB(即等于ram的大小)。
  2. 分别使用ram依次对这些临时文件进行排序(任何排序算法:快速排序,合并排序)。

现在我们有一些临时文件,如下图所示。

图–将源文件划分为较小的临时文件

现在,我们对临时文件进行了排序

  1. 指针在每个文件中初始化
  2. 创建一个大小为1GB(源文件大小)的新文件。
  3. 将每个文件中的第一个元素与指针进行比较。
  4. 最小的元素将被复制到新的1GB文件中,并且指向该最小元素的文件中的指针将递增。
  5. 遵循相同的过程,直到所有指针都遍历了各自的文件。
  6. 遍历所有指针后,我们将得到一个包含1GB排序整数的新文件。

当主内存(RAM)的大小受到限制时,这是可以对任何较大的文件进行排序的方式。

基本思想是将较大的文件分为较小的临时文件,对临时文件进行排序,然后使用这些临时文件创建新文件。在Infosys采访中询问了此问题,以了解电源程序员的个人资料。