public static void swap(int[]arr, int a, int b)
{
arr[a]=arr[a]^arr;
arr=arr[a]^arr;
arr[a]=arr[a]^arr;
}
这个异或的程序是交换数组中两个元素的位置,我看了下,思路不太清晰,能不能说一下具体情况 作者: 打工人 时间: 2012-10-26 22:29 本帖最后由 冯海霞 于 2012-10-26 22:31 编辑
交换两个整数常规的实现就是使用临时变量,异位运算交换两个整数不需要临时变量,其实是把临时变量与其中的一个整数结合起来了,也就是说把其中的一个整数当做临时变量来用。
交换两个整数a和b,其实就是a=b和b=a这两个操作。
a = a ^ b;
b = a ^ b; //==>b=(a^b)^b=a
a = a ^ b;// ==>a=(a^b)^a=b
原理其实和两个整数相加减来换位置是一样的。如:
a=a+b;
b=a-b;//==>b=(a+b )-b=a
a=a-b; //==>a=( a+b )-a=b