JAVA不使用中间变量,实现两个数的交换

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;
}

我所知道的方法就是这些,如果大家有更好的方法,欢迎一起讨论。

    原文作者:菜鸟Lv1
    原文地址: https://blog.csdn.net/QQ1608731824/article/details/81449508
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞