1. 基于加减法
void swap(int &a,int &b)
{
a=a+b;
b=a-b; //=a+b-b=a
a=a-b; //=a+b-a=b
}
2. 基于异或运算
void swap(int &a,int &b)
{
a=a^b;
b=a^b; //=a^b^b=a
a=a^b; //=a^b^a=b
}
3. 使用新的变量
void swap(int &a,int &b)
{
int tmp=a;
a=b;
b=tmp;
}
void swap(int *a,int *b)
{
int tmp=*a;
*a=*b;
*b=tmp;
}