两个数的交换,三种方法实现


两个数字的交换,三种方法


方法一:使用第三方变量交换数据;
         
方法二:使用加减法,并且不使用第三方变量      

                      思路:a加上b的和,减去a,就等于b,再用这个数减去b,就等于a。


方法三:使用异或方法交换,并且不使用第三方变量

                       思路:一个数异或另一个数偶次,都等于这个数本身。


/**
	题目:对两个数据交换
	
	要求:使用三种方法交换数据
	
	方法1:采用第三方变量
	方法2:通过加减法运算
	方法3:通过异或的方法
	
 */



package xiaolu.swap;

public class swap {

	public static void main(String[] args) {
		//调用方法
		method_1(2,4);
		method_2(2,4);
		method_3(2,4);
	}
	
	/*
	 	method_1方法:使用第三方变量交换数据;
	 	
	 	参数:传入两个参数,并且打印交换过后的值。
	 */
	public static void method_1(int a,int b){
		//打印一次交换前的值
		System.out.println("方法1交换前:a == "+a+"  b == "+b);
		//定义一个第三方变量,作为缓存
		int temp = a;
		b = a;
		a = temp;
		//打印交换后的值
		System.out.println("方法1交换后:a == "+a+"  b == "+b);
	}
	
	/*
 	method_2方法:使用加减法,并且不使用第三方变量
 	
 	参数:传入两个参数,并且打印交换过后的值。
 	
 	思路:a加上b的和,减去a,就等于b,再用这个数减去b,就等于a。
	 */
	public static void method_2(int a,int b){
		//打印一次交换前的值
		System.out.println("方法2交换前:a == "+a+"  b == "+b);
		//计算前:    a = a,		b = b
		//计算步骤:a = a+b 
		//计算后:    a = a+b,   b = b
		a = a + b;		
		//计算前:    a = a+b,	b = b
		//计算步骤: b = (a+b) - b = a
		//计算后:    a = a+b,   b = a
		b = a - b;		
		//计算前:    a = a+b,	b = a
		//计算步骤:a = (a+b) -a = b
		//计算后:    a = b,   b = a
		a = a - b;		
		//打印交换后的值
		System.out.println("方法2交换后:a == "+a+"  b == "+b);
	}
	
	/*
 	method_3方法:使用异或方法交换,并且不使用第三方变量
 	
 	参数:传入两个参数,并且打印交换过后的值。
 	
 	思路:一个数异或另一个数偶次,都等于这个数本身。
	 */
	public static void method_3(int a,int b){
		//打印一次交换前的值
		System.out.println("方法3交换前:a == "+a+"  b == "+b);
		//计算前:    a = a,	b = b
		//计算步骤:a = a^b
		//计算后:    a = a^b,   b = b
		a = a ^ b;
		//计算前:    a = a^b,	b = b
		//计算步骤:b = a^b^b = a
		//计算后:    a = a^b,   b = a
		b = a ^ b;
		//计算前:    a = a^b,	b = a
		//计算步骤:a = a^b^a = b
		//计算后:    a = b,   b = a
		a = a ^ b;
		//打印交换后的值
		System.out.println("方法3交换后:a == "+a+"  b == "+b);
	}
}

代码下载地址:http://download.csdn.net/detail/lmh820822/8355395

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值