public static void swap(int[] arr,int one,int two){
if(one!=two) {
arr[one] = arr[one] ^ arr[two];
arr[two] = arr[one] ^ arr[two];
arr[one] = arr[one] ^ arr[two];
}
}
首先明确:
0^0=0 0^1=1 1^0=1 1^1=0
即相同异或等于0,不同异或等于1
所以:
arr[one] = arr[one]^arr[two]
arr[two] = (arr[one]^arr[two])^arr[two]
arr[two] = arr[one]
arr[one] = arr[two]^arr[two] = arr[two]
最后实现两数交换,但是前提必须是两个数不能相等,若是相等,则会导致两个数都变成0



