swap()函数总结:
一、利用临时变量
1.引用(交换任意类型)
template <typename T> void swap(T& x,T& y) { T tmp; tmp = y; y = x; x = tmp; }
2.泛型指针()
void swap(void* a,void* b ) { int tmp; tmp = y; y = x; x = tmp; }
二、 不用临时变量交换
1.数学运算
1)乘
void swap (int& x,int& y) { x=x*y; y=x/y; x=x/y; }
2)加
void swap(int& x,int& y) { x=x+y; y=x-y; x=x-y; }
2.逻辑运算(相对其他的方法更高效)
void swap(int& a ,int& b) { x=x^y; y=x^y; x=x^y; }
三、宏函数(注意不要有任何换行操作,或者使用换行符‘\’)
方法一:数学运算 #define swap((a),(b)) { (a) += (b); (b) =((a)-(b)) ; (a) = ((a)-(b));} #define swap((a),(b)) { (a) *= (b); (b)=((a)/(b)); (a) = ((a)/(b))} 方法二:逻辑 #define swap((a),(b)) { (a) ^= (b); (b) ^= (a);(a) ^= (b);}
时间: 2024-10-10 11:16:41