不需要临时变量的双变量交换数值
不需要第三个变量的变量交换
要知道的事:
a^0=a;
void inplace_swap(int *x, int *y){
*y =*x ^ *y; //Step 1
*x = *x ^ *y; //Step 2
*y =*x ^*y; //Step 3
}
正如程序名字暗示的,我们认为这个过程交换了指针变量x y位置处存放的值。
注意,与通常方法不同,该方法不需要第三个临时变量存储另一个值。不过这种方法性能上优势不大,仅仅是个智力游戏。
Step | *x | *y |
---|---|---|
1 | a | a^b |
2 | b | a^b |
3 | b | a |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 JackZhang's Blog!