在归并排序的合并操作中,如下代码片段可以正确地将两个已排序的子数组 L 和 R 合并回原数组 arr 中。
void merge(int arr[], int left, int mid, int right){
int n1= mid- left+ 1;
int n2= right- mid;
vector<int> L(n1), R(n2);
for(int i= 0; i< n1; i++) L[i]= arr[left+ i];
for(int j= 0; j< n2; j++) R[j]= arr[mid+ 1+ j];
int i= 0, j= 0, k= left;
while(i< n1&& j< n2){
if(L[i]<= R[j]) arr[k++]= L[i++];
else arr[k++]= R[j++];
}
while(i< n1) arr[k++]= L[i++];
while(j< n2) arr[k++]= R[j++];
}
正确
错误