两变量的数值交换运算是编程中经常遇到的一种运算.普遍的运算方法是基于第三空间的交换运算,这是以牺牲空间为代价.但我们也可以不通过牺牲空间而是以牺牲时间甚至于也不牺牲时间的方法来进行交换运算.
设现在有两个变量A和B
要求不通过第三空间完成变量A和B的数值交换
首先讨论一下基于第三空间的数值交换方法
int tmp;
tmp = A;
A = B;
B = tmp;
现在我们讨论不通过第三空间的数值交换方法
A = A ^ B;
B = A ^ B;
A = A ^ B;
优化后算法如下:
A ^= B;
B ^= A;
A ^= B;