使用异或方法写交换算法

//交换数组a中下标为i,j的元素
public static void swap(int []a, int i ,int j) {
	a[i] = a[i] ^ a[j];
	a[j] = a[i] ^ a[j];
	a[i] = a[i] ^ a[j];
}

原理如下:
0与任何数异或结果为此任何数
任意两个相同的数异或结果为0
那么,
设a=甲,b=乙
a = a ^ b 执行后,a=甲 ^ 乙,b=乙
b= a ^ b 执行后,b=甲 ^ 乙 ^ 乙 = 甲 ^ 0 =甲,a = 甲 ^ 乙
a = a ^ b 执行后,a=甲 ^ 乙 ^ 甲=乙 ^ 0 = 乙,b = 甲
由此便完成了交换。

上一篇:PAT1020*


下一篇:centos7基础安装