java - 试图直观地看到数组中元素的交换但无法
问题描述
我正在适当地交换数组中的元素,这与此代码一起成功发生。
但是,我遇到了一个问题。我浏览了网络并阅读了很多我们应该=
从右到左阅读的地方(即arr[i] = arr[j];
和arr[j] = temp;
.
我试图以这种方式追踪它,但由于某种原因对我来说似乎没有意义。我也尝试过=
从左到右阅读标志,但对我来说仍然没有意义。
有人可以直观地告诉我循环交换的内容吗?
这是我的代码:
public class HelloWorld {
public static void main(String []args){
int[] arr = {1,2,3,4,5};
swap(arr);
}
public static void swap(int[] arr) {
for(int i = 0; i < arr.length; i++) {
for(int j = i + 1; j < arr.length; j++) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
}
}
解决方案
说arr[i]
is x
, arr[j]
isy
和temp
is as is 。这是顺序:
- 将值分配
x
给temp
- 将值分配
y
给x
在这个阶段,x
有 的值y
,并且它的原始值被覆盖。
x
将保存的原始值分配temp
给y
。
推荐阅读
- javascript - 无法使用 Jest 在我的单元测试 js 文件中注入/模拟文档?
- java - ConsumerAwareBatchErrorHandler 在错误消息 Java 中没有偏移
- python - 在具有相同ip的python中合并和排序日志文件
- php - 修改 DOM 一次会导致后续修改报错
- environment-variables - 代码执行 informatica 工作流可在 2 个环境中运行,而无需从任一环境禁用工作流
- azure - 自由职业者设置天蓝色系统的方法
- flask-socketio - 我可以在 socketio 上下文之外发出 Flask-SocketIO 消息吗?
- git - 在 mac OS 上从 crontab 运行 git pull 命令问题
- r - 如何从 R 中的 2 个合并矩阵创建一个向量并用 NA 填充任何维度间隙?
- postgresql - Nextjs / prisma:我可以手动命名多对多表吗?