因为第一步和第二步(第三步)看起来像是重复运行。谁能告诉我为什么要这样编译。
int i = 0, j = 0;
int k = l;
while (i < n1 && j < n2) { ----step one
if (L[i] <= R[j]){
arr[k] = L[i];
i++;
}
else{
arr[k] = R[j];
j++;
}
k++;
}
while (i < n1){ ---step two
arr[k] = L[i];
i++;
k++;
}
while (j < n2){ ----step three
arr[k] = R[j];
j++;
k++;
}
}
“第一步”完成了将两个源阵列合并到目标中的工作。当L
或R
用尽时,另一个源数组中仍可能剩余元素。存在“第二步”以将所有剩余元素从L
复制到目标。 “第三步”对于R
具有相同的作用。