如果给定一个整数数组和两个整数值,我如何交换两个数组值?
我使用的代码是
public class Q1K {
void swapElements(int[] array, int index1, int index2){
int index3= array[index1];
array[index1]=array[index2];
array[index2]= array[index3];
}
}
很抱歉,如果我的问题缺少信息/难以理解
答案 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)
答案 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];
}