定义int a,b;交换它们的值。
Way 1:

void Swap(int &a,int &b)
{
    int tmp=a;a=b;b=tmp;
}

最基本的三值交换法。

Way 2:

void Swap(int &a,int &b)
{
    a=a+b;b=a-b;a=a-b;
}

∵a=a+b;
b=a+b-b=a;
a=a+b-a=b;
∴b=a,a=b;
Way 3

void Swap(int &a,int &b)
{
    a^=b;b^=a;a^=b;
}

利用a xor b xor b=a的性质
Way 4

void Swap(int &a,int &b)
{
    a^=b^=a^=b;
}

类同Way 3;
用stack思考

选自《算法竞赛入门经典》-刘汝佳
转载请说明出处 : 1015606011@qq.com