1、错误交换
void swap (int x , int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
}
不能实现交换两个数据值
解释:c,c++都是按值传递的
2、传指针(c语言)
void swap (int *px , int *py)
{
int tmp;
tmp=*px;
*px=*py;
*py=tmp;
}
swap(&a,&b); //拷贝的指针(地址)
此方法可以实现交换。(c,c++均可用)
3、宏定义方式交换(c语言常用)
#define SWAP(x,y,t)((t)=(x),(x)=(y),(y)=(t))
SWAP(a,b,tmp)
4、引用方式交换(c++)
void swap (int &rx , int &ry) //引用就是别名
{
int tmp;
tmp=rx;
rx=ry;
ry=tmp;
}
5、模板交换
template <class T> void swap(T& x ,T& y)
using namespace std;
std::swap(a,b);