GESP C++ 真题 · 逐题精解
首页C++五级真题 › 2023年9月 › 第12题

GESP 2023年9月 C++五级 单选题 第12题

C++五级单选题2023年9月第12题

所属知识点:分治与递归 难度要求:掌握 考频:—

下面代码用于归并排序,其中 merge() 函数被调用次数为( )。
void merge(int L[], int R[], int s, int m, int t){
    int i = s, j = m + 1, k = s;
    while (i <= m && j <= t)
        R[k++] = (L[i] < L[j]) ? L[i++] : L[j++];
    while (i <= m) R[k++] = L[i++];
    while (j <= t) R[k++] = L[j++];
}
int cnt = 0;
void mergeSort(int S[], int T[], int s, int t){
    if (s == t) { T[s] = S[s]; return; }
    int tmp[20];
    int m = (s + t) / 2;
    mergeSort(S, tmp, s, m);
    mergeSort(S, tmp, m + 1, t);
    merge(tmp, T, s, m, t);
    cnt++;
}

正确答案:C

题目解析
对 7 个元素归并排序,merge 的调用次数为 n−1=6,选 C。

想系统刷完 GESP C++ 1~8 级真题,并查看每道题的逐题精讲?

进入 GESPPASS 开始练习