值交换的三种方式

package com.demo.algorithm.sort;

public class NumberSwap {
	
	/**
	 * 通过中间值进行交换
	 * @param a
	 * @param b
	 */
	public static void swap1(int a,int b){
		int tmp=a;
		a=b;
		b=tmp;
		display(a, b);
	}
	
	/**
	 * 两数求和然后相减的方式进行交换,x、y过大有可能超出int的最大值
	 * @param a
	 * @param b
	 */
	public static void swap2(int a,int b){
		a=a+b;
		b=a-b;
		a=a-b;
		display(a, b);
	}
	
	/**
	 * 原理:一个数异或同一个数两次,结果还是那个数
	 * @param a
	 * @param b
	 */
	public static void swap3(int a,int b){
		a=a^b;
		b=a^b;//a^b^b
		a=a^b;//a^b^a^b^b
		display(a, b);
	}
	
	public static void display(int a,int b){
		System.out.println("a="+a+",b="+b);
	}

	public static void main(String[] args) {
		swap1(5, 8);
		swap2(5, 8);
		swap3(5, 8);
	}
}

猜你喜欢

转载自sheungxin.iteye.com/blog/2341646