首页 > 试题广场 >

补全合并排序的核心代码: void mergeSort(in

[单选题]
补全合并排序的核心代码:
void mergeSort(int arr[], int l, int r) {
    if (l < r) {
        int m = l + (r - l) / 2;
        mergeSort(arr, l, m);
        mergeSort(arr, m + 1, r);
        ___________; // 填空
    }
}


  • merge(arr, l, m)
  • merge(arr, m, r)
  • merge(arr, l, m, r)
  • merge(arr, l + 1, m, r)
要补全合并排序的核心代码,需明确合并排序的步骤:先将数组分成左右两部分分别排序,然后将排好序的两部分合并。 在 `mergeSort` 函数中,已经递归地对左半部分(`l` 到 `m`)和右半部分(`m + 1` 到 `r`)进行了排序,接下来需要调用 `merge` 函数将这两部分合并。`merge` 函数需要知道要合并的数组范围,即左半部分的起始 `l`、左半部分的结束 `m`、右半部分的起始 `m + 1`(可由 `m` 和 `r` 推导,这里直接传 `l`、`m`、`r` 能明确整体范围)和右半部分的结束 `r`,所以应该调用 `merge(arr, l, m, r)`。 综上,答案选 C。
发表于 2025-09-24 20:06:21 回复(0)