交换数组元素值

时间:2014-10-03 10:12:21

标签: java arrays

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

我使用的代码是

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

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

6 个答案:

答案 0 :(得分:3)

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

所以:

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

答案 1 :(得分: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的临时变量。

答案 2 :(得分:2)

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

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

交换数组时

Learn More

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

确保为变量命名,使其在读取代码时有意义。从你的代码中,index3听起来像是数组的索引,但在代码上下文中它确实不是:)

答案 5 :(得分:0)

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

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];
}