用异或操作符来交换二个的值
非常常用的一个算法就是,a和b的交换,我们总是用到一个中间变量来进行交换。
其实可以用异或符来计算,这样就不会花销额外空间了,因为异或是可逆的。
比如a^b=c c^b=a 所以a可以通过可逆计算,算回来的。
a和b的交换:
a = a^b
b = b^a 此时的b就相当于被异或回来的a
a = a^b 这里的思路要转一转,我们可以想成,相当于是 a = (a^b)^a = (b^a)^a = b(注意!这里的a和b都是原始的)
非常常用的一个算法就是,a和b的交换,我们总是用到一个中间变量来进行交换。
其实可以用异或符来计算,这样就不会花销额外空间了,因为异或是可逆的。
比如a^b=c c^b=a 所以a可以通过可逆计算,算回来的。
a和b的交换:
a = a^b
b = b^a 此时的b就相当于被异或回来的a
a = a^b 这里的思路要转一转,我们可以想成,相当于是 a = (a^b)^a = (b^a)^a = b(注意!这里的a和b都是原始的)