Appearance
题目
在外部排序的 路归并过程中,归并趟数为 。下列关于 、、初始归并段及内存大小的说法中,正确的是()。
Ⅰ. 越大, 越小
Ⅱ. 初始归并段数不影响
Ⅲ. 内存大小限制初始归并段的最大长度
错因
A
只承认 I 对,没意识到 III 也对。可能忽略了"初始归并段是怎么生成的"这一前置环节——它由内存排序得到,每个段的长度上限就是内存能容纳的记录数。看到 III 里的"内存大小"就觉得跟趟数无关,没理顺这条因果链。
B
把 II"初始归并段数不影响 d"当成对的。错误来源:只盯着 看,把 d 当成"只跟路数有关"的量。但归并趟数公式 ( 是初始段数)里 m 是真量参数——m 越多 d 越大。
D
漏掉了 I、又错把 II 当对。这是对外排序公式整体记得最模糊的一种状态:不知道 k 和 d 的关系(也许把 k 当成段数?),又把 m 不影响 d 当成既定结论。
总解析
外排序两阶段:
- 生成初始归并段:每次把内存能装下的一批记录读进来,内排序后写回外存,得到一个有序段。重复直到所有记录处理完,共得到 个初始段;
- k 路归并:每趟把 k 个段合并成 1 个,反复进行直到只剩 1 个段。趟数
逐项核对:
Ⅰ. 越大, 越小 ✓ ,对数底数 增大 → 对数值减小(m 固定时),所以 d 单调减少。
Ⅱ. 初始归并段数不影响 ✗ 公式里 直接进入 。 越大, 越大 → d 越大。比如 、 时 ; 时 。
Ⅲ. 内存大小限制初始归并段的最大长度 ✓ 生成初始段时,一次只能把内存能容纳的记录放进来排序,所以每个初始段的长度上限 = 内存容纳记录数。内存越大,初始段越长,需要的初始段数 也越少(间接也让 d 变小)。
正确的说法是 I 和 III。
最终答案是 C。