我从一个讨论外部合并排序的链接中得到这个。
从幻灯片 6 示例:使用 5 个缓冲页面,对 108 个页面文件进行排序
Pass0:[108/5] = 22 次排序运行,每次运行 5 页(最后一次运行只有 3 页)
Pass1 [22/4] = 6 次排序运行,每次运行 20 页(最后运行只有 8 页)
Pass2:[6/3] = 2 次排序运行,80 页和 28 页
Pass 3:[2/2] = 1 个 108 页的已排序文件
问题:我的理解是外部合并排序,在 pass 0 中创建块,然后对每个块进行排序。在剩余的通行证中,您不断合并它们。因此,将其应用于上面的示例,因为我们只有 5 个缓冲页面,在 Pass 0 中,我们需要 22 个排序运行,每个运行 5 个页面。
现在,为什么我们要对剩余的通行证进行排序运行或合并?
当我们只有 5 个缓冲页时,它为什么会告诉第 1、6 次排序运行,每次运行 20 页?
合并到底发生在哪里?以及如何在每次通过时 N 减少,即从 108 到 22 到 6 到 2 ?