//交换数组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 = 甲
由此便完成了交换。