码迷,mamicode.com
首页 > 其他好文 > 详细

两数值交换

时间:2015-02-19 20:44:41      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

大致分为3种方式实现:

1.通过中间变量方式实现。

   C = A;

   A = B;

   B = C;

 

2.通过加法方式。

实现原理:比如A有5块钱,B有10快钱。此时要A,B交换,此时就先把钱给一个人,然后减去另一个人的金额。

比如先把钱给A(此时A中的钱为总金额),然后交换后B的钱就是总金额减去之前B给A的钱。

   A = A+B;

   B = A-B;

   A = A-B;

此方法的缺点:会造成内存溢出的情况。

 

3.通过位运算,异或方式(相同为0,不同为1)。

首先需要了解异或运算的一些性质

   a.任意一个变量X与其自身进行异或运算,结果为0,即X^X=0

   b.任意一个变量X与0进行异或运算,结果不变,即X^0=X

   c.异或运算具有可结合性,即a^b^c=(a^b)^c=a^(b^c)

   d.异或运算具有可交换性,即a^b=b^a

根据以上异或运算的特性可以交换两个数据,效率比之前两种方式都要高。

   IF(A==B)RETURN;//先要判断2值是否相等,否则会出错,如果相等也没有交换的意义。

   A = A^B;

   B = A^B;

   A = A^B;

 

补充几点常用的位运算操作:

1.判断两个整数是否相等。

   (A^B)==0;

2.判断一个数是奇数还是偶数。

   A&1 == 0;//偶数

   A&1 == 1;//奇数

 

两数值交换

标签:

原文地址:http://www.cnblogs.com/zhangygl/p/4296277.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!