在网上看到许多问这个交换的题目,也有很多解法,经过一番运算后,推荐下面三个办法:
最简单的方法:
a=a+b;
b=a-b;
a=a-b;
运算时间最短的方法:
a ^= b ^ (b ^= a ^ b);
用的是异或的方法,理解过程是这样的a ^= 15 ^ (b ^= 10 ^ 15)
由于异或运算的时间复杂度是O(1),加法运算的时间复杂度是O(n).所以异或这个方法在编译的时间性能上最快。
代码长度最短的方法:
a = b + (b = a) * 0;
用的是加法运算,理解过程是这样的a = 15 + ( b = 10) * 0 ;