大家都知道,可以使用异或运算在不使用额外内存的情况下,进行两个整数的交换。
void swap(int &x, int &y){
x^=y;
y^=x;
x^=y;
}
但是,当x==y时,这样交换有个致命的缺陷,交换后x=0,y=x;
因此,使用异或运算进行整数交换时,必须首先判断两个数是否相等,完整代码如下:
void swap(int &x, int &y){
if(x==y) return;
x^=y;
y^=x;
x^=y;
}