第20736题
判断给定C++归并排序代码执行时是否仅输出一次HERE字符串

下面的C++代码实现归并排序,题目说法:该代码仅输出一次HERE字符串,因为merge()函数仅被调用一次,完整代码如下:

void merge(std::vector<int>& arr, int left, int mid, int right) {
    std::vector<int> temp(right - left + 1);

    int i = left;
    int j = mid + 1;
    int k = 0;

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

    while (i <= mid) {
        temp[k++] = arr[i++];
    }

    while (j <= right) {
        temp[k++] = arr[j++];
    }

    for (int p = 0; p < k; ++p) {
        arr[left + p] = temp[p];
    }
}

void mergeSort(std::vector<int>& arr, int left, int right) {
    if (left >= right) {
        return;
    }

    int mid = left + (right - left) / 2;

    mergeSort(arr, left, mid);
    mergeSort(arr, mid + 1, right);

    std::cout << "HERE";
    merge(arr, left, mid, right);
}
A

正确

B

错误

提交0次 正确率0.00%
答案解析