Swap(a,b)
定义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