Java中实现两个数的交换,使用中间变量的方法,无外乎采用引用的方法:
void swap(int &a,int &b){
int temp;
temp = a;
a = b;
b = temp;
}
或者使用指针:
void swap(int *a,int *b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}
在不使用中间变量的情况下,有以下几种那个方法供参考:
1、使用异或的方法,只适用于整型变量,不适用于浮点型
int x = 10; //用二进制表示:x=0b1010;
int y = 15; //用二进制表示:x=0b1111;
System.out.println("x="+x+" y="+y);
x = x^y; //x^y= 0b1010^0b1111 = 0b0101
y = x^y; //x^y= 0b0101^0b1111 = 0b1010 =10
x = x^y; //x^y= 0b0101^0b1010 = 0b1111 =15
System.out.println("x="+x+" y="+y);
2、使用加减法
void swap(int *a,int *b){
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
}
3、使用乘除法,被除数不能为零
void swap(int a ,int b){
a = a*b;
b = a/b;
a = a/b;
}
我所知道的方法就是这些,如果大家有更好的方法,欢迎一起讨论。