【问题标题】:Swapping array element values交换数组元素值
【发布时间】:2014-10-03 10:12:21
【问题描述】:

给定一个整数数组和两个整数值,如何交换两个数组值?

我使用的代码是

public class Q1K {
    void swapElements(int[] array, int index1, int index2){
        int index3= array[index1];
        array[index1]=array[index2];
        array[index2]= array[index3];
    }
}

抱歉,如果我的问题缺少信息/难以理解

【问题讨论】:

  • 提供您的输入和预期输出将有助于获得清晰的想法
  • 你的问题不清楚。你能谈谈你的期望吗?

标签: java arrays


【解决方案1】:

您已经发现需要一个临时变量来执行 Java 中的基本交换。但是变量的命名(在您的情况下为index3)表明您混淆了;目标不是临时存储数组的 index,而是由该索引表示的 value - 否则,它将被覆盖(并因此丢失)。您在交换的“步骤 3”中要做的是恢复临时值本身,而不是索引后面的值。

所以:

void swapElements(int[] array, int index1, int index2){
        int tempValue = array[index1];
        array[index1] = array[index2];
        array[index2] = tempValue;
}

【讨论】:

    【解决方案2】:

    应该是,

    int temp = array[index1]; // its not a index, its a value at a particular index.
    array[index1]=array[index2];
    array[index2]= temp;
    

    您使用的命名约定很容易混淆index3,它实际上应该是用于swapping 的临时变量。

    【讨论】:

      【解决方案3】:

      array[index3]; 将再次从数组中返回值。所以你需要把它写成index3

      明智地命名变量以避免混淆, 还要记住大括号内的[] 值始终表示位置。

      Learn More 交换数组。

      【讨论】:

        【解决方案4】:

        您的答案非常接近。看看这个解决方案...

        public class Q1K {
            void swapElements(int[] array, int index1, int index2){
                int val = array[index1];
                array[index1] = array[index2];
                array[index2] = val;
            }
        }
        

        【讨论】:

          【解决方案5】:
          public class Q1K {
              void swapElements(int[] array, int index1, int index2){
                  int index3= array[index1];
                  array[index1]=array[index2];
                  array[index2]= index3;
              }
          }
          

          确保为变量命名,以便它们在阅读代码时有意义。从您的代码来看, index3 听起来像是数组的索引,但在代码上下文中它确实不是:)

          【讨论】:

            【解决方案6】:

            还有另一种方式不需要使用临时变量

            void swapElements(int[] array, int ix1, int ix2){
                array[ix1] = array[ix1] + array[ix2];
                array[ix2] = array[ix1] - array[ix2];
                array[ix1] = array[ix1] - array[ix2];
            }
            

            【讨论】:

              猜你喜欢
              • 2010-10-26
              • 1970-01-01
              • 2015-10-31
              • 1970-01-01
              • 2021-08-07
              • 2012-09-21
              • 1970-01-01
              • 2012-07-01
              相关资源
              最近更新 更多