1 临时变量
void swap(int&a,int&b){
int temp = a;
a = b;
b = temp;
}
2 加减交换
void swap(int&a,int&b){
a = a + b;
b = a - b;
a = a - b;
}
3 异或交换
a^b^a^b^a的结果是 a
异或满足交换律
a^a = 0;b^b =0;
任何一个数与0异或都等于自己!
所以相同的两个数可以直接忽略
void swap(int&a,int&b){
a ^= b;
b ^= a;
a ^= b;
}
4 指针交换
void swap(int *x,int *y)
{
int tmp = *x;
*x = *y;
*y = tmp;
}