经典面试问题:不使用额外的空间,交换两个数字。。
方法一:
这个也是很多人不一定想到的。(使用异或)
a=a^b;
b=a^b;
a=a^b;
这样就可以实现a b交换。
如a=10 二进制00001010.
b=20 二进制00010100
a=a^b;//这一步a=00011110
b=a^b; // b=00001010 就是10
a=a^b; //a=00010100 就是20
最终a=20, b=10
这样即实现了不用temp 交换俩个数。。
方法二:
这个很多人都应该知道的。
c=c+d;
d=c-d;
c=c-d;
例如;c=10 d=20
c=c+d;//c=10+20=30
d=c-d;//d=30-20=10
c=c-d;c=30-10=20
最终c=20 d=10;
二者区别:
用clock()函数计算运行时间,因为定义的是int 型,第一种方法要转化成二进制花费了一定的时间。。
交换1000000次,时间相差为几十毫秒。