使用异或交换数组中的两个元素,当i = j时,交换之后inputs[i] = input[j] = 0。这是因为
第一步inputs[i] = inputs[i] ^ inputs[j],因为inputs[i] = inputs[j],所以inputs[i] = 0。因为i=j,所以同时inputs[j] = inputs[i] = 0,所以最后结果都为0;
inputs
[i
] = inputs
[i
] ^ inputs
[j
];
inputs
[j
] = inputs
[i
] ^ inputs
[j
];
inputs
[i
] = inputs
[i
] ^ inputs
[j
];
如果想得到正确结果,在交换之前应判断 i是否和 j相等。
if(i !
= j
){
inputs
[i
] = inputs
[i
] ^ inputs
[j
];
inputs
[j
] = inputs
[i
] ^ inputs
[j
];
inputs
[i
] = inputs
[i
] ^ inputs
[j
];
}