【发布时间】:2020-02-28 17:27:40
【问题描述】:
第一步和第二步(第三步)对我来说似乎在反复运行。为什么要这样编程?
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 合并到 arr 中。第 2 步和第 3 步是把剩余的数字相加,只有 2 中的一个会被执行,这是在到达 L 或 R 的末尾之后,以填充另一个数组的剩余值。
标签: java arrays algorithm loops divide-and-conquer