首页 > 解决方案 > 试图直观地看到数组中元素的交换但无法

问题描述

我正在适当地交换数组中的元素,这与此代码一起成功发生。

但是,我遇到了一个问题。我浏览了网络并阅读了很多我们应该=从右到左阅读的地方(即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]);
    }
   }
}

标签: javaalgorithmdebugging

解决方案


arr[i]is x, arr[j]isytempis as is 。这是顺序:

  1. 将值分配xtemp
  2. 将值分配yx

在这个阶段,x有 的值y,并且它的原始值被覆盖。

  1. x将保存的原始值分配tempy

推荐阅读