参考文献

使用异或运算来进行数值交换操作

异或运算语法: 假设a和b不相等.

  • a^a=0;
  • a^b=1;
  • a^0=0;
  • 异或运算满足交换律;
  • 异或运算满足结合律;
1
2
3
4
5
6
// 进行异或运算 a = a ^ b
a = a ^ b;
// b = a ^ b ^ b = a ^ (b ^ b) = a ^ 0 ==> b = a
b = a ^ b;
// a = a ^ b ^ a = b ^ (a ^ a) = b ^ 0 ==> a = b
a = a ^ b;

取中间值

前置条件: 数组区间[l,r],取该区间的中间值

  • 使用l+((r-l)>>1)不使用(l+r)/2