这是个很经典很多时候都会用到的问题,但是容易被忘记。在这里做个笔记:
int a = 1; int b = 2; inline void Swap(int &a,int &b){ if(a!=b) { a=a^b; b=a^b; a=a^b; }}
^是异或XOR运算符;
优化后:
int &swap(int &a, int &b){ return (b ^= a ^= b ^= a);}
这样就实现了交换
方法一
void swap(int *p, int *q){ *p = *p + *q; *q = *p - *q; *p = *p - *q;}
方法二
void swap(int *p, int *q){ *p = *p + *q - (*q = *p);}