java 排序问题怎么解决???????????

int y=10;
int z=30;
z=z+y;
y=z-y;
z=z-y;
System.out.println(z);
System.out.println(y);
为什么y和z会交换为什么

int y = 10;
    int z = 30;

    int temp = z + y;//把和用temp接收
    y = temp - y;//实际上就是z+y-y
    z = temp - z;//实际上就是z+y-z
    System.out.println(y);
    System.out.println(z);

int y=10;
int z=30;
z=z+y;// 将10+30的结果接赋值给z ,此时z =40 ,y=10
y=z-y;// 将40-10的结果接赋值给y ,此时z =40 ,y=30
z=z-y;// 将40-30的结果接赋值给y ,此时z =10 ,y=30

同求更好的解释,已经是公式推导出来的了,再解释有点难,只能顺着公式说一下了。
这个题是不用多余空间,实现两数交换。
z=z+y;此时z是和,y没变。
y=z-y;两数和z减去没变的y,结果是原来的z,所以y=原来的z。
z=z-y;z是原始的y+z的和,y是原始的z,两数和z-原始的z肯定等与y,所以z=y。
自己都迷糊了

这个应该是用最少的空间进行变量值替换

这不是排序问题吧,这是赋值替换吧

这个跟排序没关系把

排序的话你可以追尾替换
t=z;
z=y;
y=t;

这是交换吧,不是排序.

多理解一下就ok了,很简单的为题,可能你刚接触java,对这些东西有点接受不了。

这就是java里面与现实的运算关系的区别,java里面是赋值。

这是y和z替换了,不是排序

这个只当做纯计算结果理解就行了,java中交换和排序都不这么做。
交换最基础和常用的代码是追尾并绕圈:t=z; z=y; y=t;
排序的算法有很多,整型常见冒泡,或者转换数组排序!