下面的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);
}