下面的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);}
填写答案