今天写快排的时候,突然想到我们到底可以用多少种方法来实现交换两个变量的值呢。然后就搜了下,总结出了如下几种,亲测都可以运行。但我用的是交换两个数组元素的值,那么如果当两个元素相等时,前两种方法是不能正确交换,而是得到0.具体原因现在我还不是很清楚。比较推荐的还是地三种和最后一种方法。
#define SWAP(a,b) {a = a^b; b = a^b; a= a^b;}#define SWAP(a,b) {a = a + b; b = a - b; a= a - b;}#define SWAP(a,b) {typeof(a) t = a; a = b; b = t;}#define SWAP(type,a,b) {type t = a; a = b; b = t;}void Swap(int *a, int *b){ int tmp; tmp = *a; *a = *b; *b = tmp;}