交换两个数的值Swap的一些方法及其源代码实现

来源:互联网 发布:遥感卫星数据 云检测 编辑:程序博客网 时间:2024/05/23 02:01
宏形式
#define swap(a,b) a^=b^=a^=b

#define swap(a,b) (a-=(b=-b+(a+=b)))
或#define swap(a,b) a=a+b;b=a-b;a=a-b //这里最后没有分号更好
宏定义比较容易有副作用,最好给每个变量括号。


函数形式
typedef int ElementType;

//第一种方法
void Swap( ElementType *Lhs, ElementType *Rhs )
{
ElementType Tmp = *Lhs;
*Lhs = *Rhs;
*Rhs = Tmp;
}

//第二种方法
void Swap( ElementType *Lhs, ElementType *Rhs )
{
*Lhs += *Rhs;
*Rhs = *Lhs - *Rhs;
*Lhs -= *Rhs;
}

//第三种方法
void Swap( ElementType& Lhs, ElementType& Rhs )
{
if( Lhs != Rhs )
{
Lhs ^= Rhs;
Rhs ^= Lhs;
Lhs ^= Rhs;
}
}
函数调用也比较耗时,最好把函数定义成内联inline的。
原创粉丝点击