判断题

下面的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 错误
赣ICP备20007335号-2