/** */
/************************************************************
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;
}
}
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;
}
}