实现两个变量的互换(不借助第三个变量)
2017-07-10 15:07
246 查看
一、问题简述
变量的互换常见于数组排序算法中,常见的做法是创建第三个变量进行互换,但是创建第三个变量仅作为过渡变量,这样不仅消耗系统内存,还使效率低下。这里提供一种不借助第三个变量的算法实现两个变量的互换。二、代码实现
package net.csdn.exercises02; import java.util.Scanner; /* * 不借助第三方变量实现两个变量的互换 */ public class VariableExchange { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入第一个整数:"); byte num1 = sc.nextByte(); System.out.println("请输入第二个整数:"); byte num2 = sc.nextByte(); num1 = (byte)(num1 ^ num2); num2 = (byte)(num2 ^ num1); num1 = (byte)(num1 ^ num2); System.out.println("num1 = " + num1); System.out.println("num2 = " + num2); sc.close(); } }
三、结果分析
分析:这里用的是byte类型的数据,是为了方便分析,int等其他的类型也适用。
假如num1输入的是4,num2输入的是6,那么num1的二进制值是00000100,num2的二进制值是00000110
第一步:
num1 = (byte)(num1 ^ num2);
此时num1 = 00000100 ^ 00000110 = 00000010,它就相当于num1 = 2。
第二步:
num2 = (byte)(num2 ^ num1);
此时等式右边num1 = 2,则此式子为:num2 = 00000110 ^ 00000010 = 00000100,它就相当于num2 = 4。
第三步:
num1 = (byte)(num1 ^ num2);
此时等式右边num1 = 2,num2 = 4,则此式子为:num1 = 00000010 ^ 00000100 = 00000110,它就相当于num1 =6。
这就完成了num1和num2的交换。
相关文章推荐
- 不借助第三个变量实现两个变量的互换
- 不借助第三个变量,实现两个整数互换值
- Java基础知识强化05:不借助第三个变量实现两个变量互换
- java 实现两个变量的互换(不借助第三个变量,即中间变量、临时变量)
- 实现两个变量的互换(不借助第三个变量)
- 实现两个数字的互换,不需要借助第三个变量
- 300.7实现两个变量的互换,不借助第三个变量
- Java两个变量的互换(不借助第3个变量)具体实现方法
- 不借助第三个变量实现两个变量交换的思考
- Java基础应用之运算符(实现两个变量的互换(借助第3个变量))
- JAVA不借助第三个变量实现两个变量交换的思考
- 基于JAVA的不借助第三个变量实现交换两个变量的值的小代码
- 不借助第三个参数实现两个变量的值互相交换
- [Java] 不使用第三个变量实现两个整数类型变量互换(异或运算符)
- Java基础应用之运算符(实现两个变量的互换(不借助第3个变量))
- 不使用第三个变量的情况下,实现两个变量间的互换。
- 实现两个整数变量的互换(不借助其他变量)
- 不借助第三个变量实现两个变量之间的值传递和交换
- 不借助第三个变量实现两个变量之间的值传递和交换
- 不借助第三个变量实现两个变量交换的思考