探究两数交换的几种常用方法
使用中间值传递
方法一:使用中间值保存。
public static void temp(){
int x = 10;
int y = 20;
System.out.format("交换两数之前:x:%d,y:%d%n",x,y);
//定义中间值
int temp;
//实现交换
temp = x;
x = y;
y = temp;
System.out.format("交换两数之后:x:%d,y:%d%n",x,y);
}
实验结果:
使用数学方法
方法二:使用数学中加减运算,巧妙实现。
public static void mathPlus(){
int x = 10;
int y = 20;
System.out.format("交换两数之前:x:%d,y:%d%n",x,y);
//实现交换
x = x+y;
y = x-y;
x = x-y;
System.out.format("交换两数之后:x:%d,y:%d%n",x,y);
}
方法三:使用数学中乘除运算,巧妙实现。
public static void mathMult(){
int x = 10;
int y = 20;
System.out.format("交换两数之前:x:%d,y:%d%n",x,y);
//实现交换
x = x*y;
y = x/y;
x = x/y;
System.out.format("交换两数之后:x:%d,y:%d%n",x,y);
}
利用二进制位移方法
方法四:使用位移运算中异或运算,巧妙实现。
public static void displacement(){
int x = 10;
int y = 20;
System.out.format("交换两数之前:x:%d,y:%d%n",x,y);
//实现交换
x = x^y;
y = x^y;
x = x^y;
System.out.format("交换两数之后:x:%d,y:%d%n",x,y);
}
总结
即使有很多简单的程序,但也会有很多不同的方式解决这个问题,就需要我们去发掘,去学习。我们一起学习进步。。。。。。