交换两数的方法大概结共有两种
一种需要第三变量,一种不需要第三变量(总结出三种)
1、需要第三变量
只能用指针实现
void swap(Int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
2、
00)用加法来实现
void swap(int *a, int *b)
{ //这个仔细看下即可明白
*a = *a + *b;
*b = *a -*b;
*a = *a - *b;
}
01)用乘除法实现
void swap(int *a, int *b)
{ //这个仔细看下即可明白
*a = *a * *b;
*b = *a / *b;
*a = *a / *b;
}
02)用异或运算符实现
//简单分析:
a = a^b,而a^a=0,a^0=a;
所以要求b =a ,只要a^b^b即可(上面a已变为a^b)
同理要使a = b,主要a^b^a即可,而通过上面运算,a=a^b,b=a,所以a=a^b
void swap(int *a, int *b)
{
*a = *a ^ *b;
*b =*b ^ *a;
*a = *a ^ *b;
}
或许还有其他方法,可以自己总结