|
主题: 交换变量
|
 s22
职务:版主
等级:4
金币:10.0
发贴:1634
|
#12003/4/25 13:25:43
x=1 y=2
x^=y y^=x x^=y trace("x:"+x) trace("y:"+y) ============ output x:2 y:1
|
 UndeadCraft
职务:版主
等级:4
金币:10.0
发贴:1993
|
#22003/4/25 14:24:07
异或还能这样用:)
|
 5D荣誉版主
职务:普通成员
等级:2
金币:1.0
发贴:515
|
#32003/4/25 23:43:23
s22老有新东西,不错...
|
 janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#42003/4/25 23:46:00
无需中间变量的一个算法
|
 5D荣誉斑竹
职务:普通成员
等级:2
金币:10.0
发贴:585
|
#52003/4/26 10:27:35
这样也行: x=a;y=b; x=x+y; y=x-y; x=x-y;
|
 UndeadCraft
职务:版主
等级:4
金币:10.0
发贴:1993
|
#62003/4/28 9:21:49
bluejeck的方法通俗易懂:D
|
 yeyeyeye
职务:普通成员
等级:1
金币:1.0
发贴:159
|
#72003/4/30 16:17:12
bluejack
好方法
|
 高高
职务:普通成员
等级:1
金币:0.0
发贴:19
|
#82003/4/30 19:57:53
从理解上不好,这样违背了软件工程的原则,不宜理解,现在计算机硬件足够的宽裕,不能为了一个空间去降低程序易读性; 能用这样的方法的确很聪明,我不是挑剔大家,是说这样的弊处。 不要874我!
|
 janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#92003/4/30 22:42:15
如果用来封装,对效率的要求当然是越高越好,这种情况下按位运算很受欢迎(比如对整数*2常常用<<1代替) 从运算效率上来说,bluejack的算法效率也许还不及传统的赋值算法。不过另辟蹊径,思路开阔
|
 蓝色天空
职务:普通成员
等级:1
金币:0.0
发贴:2
|
#102003/5/1 18:03:02
用异或比较好,不会产生溢出的问题.在汇编中可以用, bluejack的算法很早就有了,用来练习对语言的掌握不错. 再比如不用数组对三个数的排序.
|