如何使用临时变量交换两个以上的变量

Posted

技术标签:

【中文标题】如何使用临时变量交换两个以上的变量【英文标题】:How to swap more than two variables using temporary variables 【发布时间】:2013-05-25 12:42:00 【问题描述】:

我试图弄清楚。有 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 编码。

【问题讨论】:

【参考方案1】:

只需使用一个数组和一个循环,一个临时变量就足够了。 P-code,因为你没有提到语言:

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

【讨论】:

【参考方案2】:

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

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

因此,您唯一需要使用temp 的时间是在开始时保存1 的值(就像您目前正在做的那样),以及在最后分配@987654330 的原始值时@到4。您不能使用1,因为它已被覆盖,但出于此目的在temp 中保存了一份副本。

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

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

【讨论】:

【参考方案3】:

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

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;

【讨论】:

以上是关于如何使用临时变量交换两个以上的变量的主要内容,如果未能解决你的问题,请参考以下文章

骚操作!!!如何不使用临时变量,实现交换swap。

两个数字交换(不使用临时变量)

JavaScript不用临时变量交换两个变量的值的七种解决方案

不使用临时变量交换两个变量值

js---交换两个值

0091 交换两个变量的值( 实现思路:使用一个 临时变量 用来做中间存储 )