1

我试图弄清楚如何使用临时变量交换两个以上的变量。有 4 个变量要交换,1,2,3 和 4。变量 1 是与 2 交换、2 与 3、3 与 4 和 4 与 1 交换。看起来很简单,但我只学会了如何交换两个变量如此,并且正在与更大的规模作斗争。我试过了

temp = 1
1 = 2
temp = 2 
2 = 3 
temp = 3
3 = 4
temp = 4
4 = 1

我需要多个临时变量吗?仍然只有初学者任何帮助将不胜感激!

编辑:对不起,忘记添加我正在为 java 编码。

4

3 回答 3

1

只需使用一个数组和一个循环,一个临时变量就足够了。由于您没有提及语言,因此 P 代码:

array = { 1, 2, 3, 4 }
tmp = array[0]
for i in [0, array.count - 1)
    array[i] = array[i + 1]
array[array.count - 1] = tmp
于 2013-05-25T12:43:54.887 回答
1

考虑第三步会发生什么。的原始值1(保存temp在第一行)丢失了,因为您temp用 的值覆盖2

事实证明,没有必要保存原始值的副本,2因为1. 这同样适用于所有其他变量(除了1)。

因此,您需要使用的唯一时间temp是在开始时保存 的值1(就像您当前正在做的那样),以及在最后将原始值分配给1to 时4。您无法使用1,因为它已被覆盖,但temp为此目的保存了一份副本。

所以最终的代码是这样的:

temp = 1
1 = 2
2 = 3 
3 = 4
4 = temp
于 2013-05-25T12:52:04.897 回答
1

数组是满足您要求的更好方法。在您当前的伪代码中,您可以执行以下操作:

temp = 1
1 = 2
2 = 3 
3 = 4
4 = temp

在 java 中,您可以使用数组执行以下操作:

int[] x = {5,15,25,35};
int temporary = x[0];
for(int j=0;j<x.length-1;j++){
    x[j]=x[j+1];
}
x[x.length-1]=temporary;
于 2013-05-25T12:53:17.600 回答