C 在不使用临时变量的情况下交换4个变量
我想在不使用临时变量的情况下交换4个变量。可能吗 我想像C 在不使用临时变量的情况下交换4个变量,c,C,我想在不使用临时变量的情况下交换4个变量。可能吗 我想像a=b&b=c&c=d&d=a,而不使用新的第五个变量temp **更新:-确定。。知道了!如果没有另一个新变量,这是不可能的 如何使用单个临时变量执行此操作?***您可以在连续对上使用,在没有临时变量的情况下交换n个变量 a b c d // Variables ------- A B C D // Initial values B A C D // swap(a,b) B C A D // swap(b,c) B C
a=b&b=c&c=d&d=a
,而不使用新的第五个变量temp
**更新:-确定。。知道了!如果没有另一个新变量,这是不可能的
如何使用单个临时变量执行此操作?***您可以在连续对上使用,在没有临时变量的情况下交换n个变量
a b c d // Variables
-------
A B C D // Initial values
B A C D // swap(a,b)
B C A D // swap(b,c)
B C D A // swap(c,d)
这就是说,使用临时变量更容易理解,并且不一定效率更低
编辑
更新后的问题询问如何使用单个临时变量交换变量。这很容易
int temp = a;
a = b;
b = c;
c = d;
d = temp;
不使用任何第五个变量,如果有4个变量x,y,z,w,你想让它们x=y,y=z,z=w,w=x,我们可以这样工作
x=x+y;
y=x-y;
x=x-y;
y=y+z;
z=y-z;
y=y-z;
z=z+w;
w=z-w;
z=z-w;
首先交换
a
,b
然后交换b
,d
然后交换c
,b
…我不明白您更新的问题。@Kay我想至少用一个临时变量来做。。。这有可能吗?你说的“不一定效率更低”是指“当然效率更高”。这是我的猜测,但我没有在任何地方测量过。@andythonas如果c=d
,那么c等于等于a
:(所以这不对!@user2925358-试试代码-它有效。它没有设置“c等于temp”任何地方。语句“c=d”将变量d的值复制到变量c中。变量c不受对d的后续更改的影响。将其视为四个框,每个框上都有一页纸,上面有一个整数。语句“c=d”将该页复制到框d中,然后将副本放入框c中。然后是“d=temp”将值复制到temp中,并将副本放入框d中。