java - 这个 java while 循环在合并排序中做了什么?
问题描述
第一步和第二步(第三步)对我来说似乎是反复运行。为什么要这样编程?
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
。
推荐阅读
- docker - 在 Dockerfile 中添加自定义 openssl.cnf 以生成 SSL
- python - 具有复数元素的 Numpy 矩阵向量乘法
- reactjs - Reactjs屏幕不刷新,更新时总是落后一个循环
- arrays - 在常见的 lisp 中,使用 '#(...) 或仅使用 #(...) 创建向量有什么区别?
- python - SQL 中的中间聚合函数和数据操作
- azure - 有没有办法使用二头肌将 Azure 防火墙连接到 Front Door 高级策略?
- swift - xcode12 如何将.md 文件的字体更改为等宽字体?
- javascript - 展平嵌套的 JSON 对象
- python - 一次将多个 tkinter 菜单项设置为“正常”的最有效方法是什么?
- python - 你如何在 Numpy 中创建一个(有时)参差不齐的数组?