/** *//************************************************************ swap 的三种实现, 后两种实现了空间优化, 但带来了一个问题, 若调用swap(a, a) a的结果将是0, 可在程序的开头判断两者是不 是同一个地址,如swap2所示. *************************************************************/ void swap(int& a,int& b) ...{ int tmp = a; a = b; b = tmp; } void swap1(int& a,int& b) ...{ a ^= b; b ^= a; a ^= b; } void swap2(int& a,int& b) ...{ if (&a !=&b) ...{ a = a + b; b = a - b; a = a - b; } }