Algorithm 关于多路径排序算法

Algorithm 关于多路径排序算法,algorithm,sorting,Algorithm,Sorting,我正在阅读Jon Bentley()的编程珍珠 在这里,作者提到了各种排序算法,如合并排序、多路径排序 问题: 合并排序算法是如何通过读取输入文件一次,使用工作文件并只写入输出文件一次来工作的 作者如何表示40遍(即多遍排序算法)通过只写入一次输出文件而不写入工作文件来工作 有人能用一个简单的例子来解释上面的内容吗,比如用内存来存储3位数字,用10位数字来存储,例如,9,0,8,6,5,4,1,2,3,7这是Jon Bentley的第一章 (1999),这是一本好书。第一版中的等效示例略有不同;

我正在阅读Jon Bentley()的编程珍珠

在这里,作者提到了各种排序算法,如合并排序、多路径排序

问题:

  • 合并排序算法是如何通过读取输入文件一次,使用工作文件并只写入输出文件一次来工作的

  • 作者如何表示40遍(即多遍排序算法)通过只写入一次输出文件而不写入工作文件来工作


  • 有人能用一个简单的例子来解释上面的内容吗,比如用内存来存储3位数字,用10位数字来存储,例如,
    9,0,8,6,5,4,1,2,3,7

    这是Jon Bentley的第一章 (1999),这是一本好书。第一版中的等效示例略有不同;多路径算法只对数据进行了27次传递(可用内存更少)

    Jon Bentley描述的排序具有特殊的设置约束

    • 该文件最多包含1000万条记录
    • 每条记录都是一个7位数字
    • 没有与记录关联的其他数据
    • 当必须进行排序时,只有1个MiB内存可用
    问题1 对输入文件的一次读取会从输入中提取内存中所能容纳的行数,对数据进行排序,并将其写入工作文件。冲洗并重复,直到输入文件中没有更多数据

    然后,通过读取工作文件并将排序的内容合并到单个输出文件中来完成该过程。在极端情况下,可能需要创建新的、更大的工作文件,因为程序无法一次读取所有工作文件。如果发生这种情况,您将安排最终过程具有可处理的最大输入数,并让中间过程合并适当数量的文件

    这是一个通用算法

    问题2 这就是利用数据的特殊属性的地方。由于数字是唯一的,并且范围有限,因此该算法可以在第一次读取文件时,从范围的前四十分之一提取数字,排序并写入这些数字;然后它提取范围的第二个四十分之一,然后是第三个,…,然后是最后的四十分之一

    这是一个特殊用途的算法,利用了数字的性质