‹ 上一题 下一题 ›

g5-04561. GESP-5级-2026-06-单选-第13题 未做

1000 ms 256 MB 测试点 ? GESPGESP-52026-06单选客观题5级·排序排序算法

在对长度为 ()的数组进行归并排序的过程中,mergeArray 函数(合并两个有序子数组的操作)被调用的次数是( )。

const int MAXN = 100005;
int a[MAXN];
int tempArr[MAXN];

void mergeArray(int left, int mid, int right) {
    int i = left;      // 左半部分起点
    int j = mid + 1;   // 右半部分起点
    int k = left;      // 临时数组下标

    while (i <= mid && j <= right) {
        if (a[i] <= a[j]) {
            tempArr[k++] = a[i++];
        } else {
            tempArr[k++] = a[j++];
        }
    }

    while (i <= mid) {
        tempArr[k++] = a[i++];
    }

    while (j <= right) {
        tempArr[k++] = a[j++];
    }

    for (int p = left; p <= right; p++) {
        a[p] = tempArr[p];
    }
}

void mergeSort(int left, int right) {
    if (left >= right) {
        return;
    }

    int mid = left + (right - left) / 2;
    mergeSort(left, mid);
    mergeSort(mid + 1, right);
    mergeArray(left, mid, right);
}
  • A.
  • B.
  • C.
  • D.
未选择
输入
输出

            
答案