标题: 如何实现两个整数变量X与Y的交换 [打印本页] 作者: 烟雨江南 时间: 2016-4-11 12:33 标题: 如何实现两个整数变量X与Y的交换 大神们,请问下:如何实现两个整数变量X与Y的交换呢?作者: psuugdufnm 时间: 2016-4-11 12:50
int x; int y; int z; z=x; x=y; y=z;作者: psuugdufnm 时间: 2016-4-11 12:53
上学的时候,老师讲过,把x 和 y 看作成两杯水, z是空杯子。 把x 的水倒入z; 把y的水倒入x;最后把z中的水倒入y;作者: 958721894 时间: 2016-4-11 12:54
import org.junit.Test; /* * 实现两个整数交换的4种方法 */ public class NumberChange { //1.采用第三方变量 @Test public void test1(){ int i = 10; int j = 20; System.out.println("i=" + i + ",j=" + j); //数值交换 int k = i; i = j; j = k; System.out.println("i =" + i + ",j=" + j); System.out.println("------------------"); } @Test public void test2(){ //2.异或位运算 ^ int i = 10; int j = 20; System.out.println("i=" + i + ",j=" + j); i = i ^ j; j = i ^ j;//j = i ^ j ^ j i = i ^ j;//i = i ^ j ^ i System.out.println("i=" + i + ",j=" + j); System.out.println("------------------"); } //3.加法 @Test public void test3(){ int i = 10; int j = 20; System.out.println("i=" + i + ",j=" + j); i = i + j; j = i - j; i = i - j; System.out.println("i=" + i + ",j=" + j); System.out.println("------------------"); } //4.一句话搞定 @Test public void test4(){ int i = 10; int j = 20; System.out.println("i=" + i + ",j=" + j); j = (i + j) - (i = j); System.out.println("i=" + i + ",j=" + j); } }作者: strongmanzxh 时间: 2016-4-11 22:18
直接采用位异或的规律进行交换即可作者: huhemingtiancai 时间: 2016-4-11 22:32
三种思路啊,你这样水贴会被封的作者: xi502586913 时间: 2016-4-11 23:00
用^就可以了,比如x=x^y;
y=x^y;
x=x^y;
就能做到了作者: xi502586913 时间: 2016-4-11 23:01
加减法, 第三方变量也可以做到作者: 不忘初❤ 时间: 2016-4-11 23:10
这是不是典型的水贴???作者: 格城先生 时间: 2016-4-11 23:16
int x,y; int z =x; int x = y; int y =z;作者: 格城先生 时间: 2016-4-11 23:20
还有一种: int x,y; x = x + y; y = x - y; x = x - y;作者: 梧桐望穹 时间: 2016-4-11 23:24
定义中间变量吧作者: fanxiaolin 时间: 2016-4-11 23:26
第三方变量,这种问题看视屏作者: cohle1992 时间: 2016-4-11 23:31
异或的方法作者: junjun1314520 时间: 2016-4-12 09:07
定义一个第三方的变量 int c ; c = a ; a = b ; b = c ; 然后在输出试下 作者: 年年 时间: 2016-4-12 13:03
int x,y
x =x+y;
y = x - y
x = x - y作者: 菊花爆满山 时间: 2016-4-12 16:23
定义一个临时变量temp作者: Yoyoqiu 时间: 2016-4-12 17:10
面试的话 用异或
开发的话 用temp