国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 互联网 > 常用算法之交换两个数的值

常用算法之交换两个数的值

来源:程序员人生   发布时间:2014-11-07 08:36:34 阅读次数:2321次

交换两个变量的值,古老的话题,下面把各种方法做个总结。

为了方便,先定义两个变量。

int a = 1; int b = 2;

1 借助临时变量

1 交换变量值

int tmp; tmp = a; // tmp = 1 a = b; // a = 2 b = tmp; // b = 1


2 交换地址

int *p; p = &a; // tmp->1 a = &b; // a->2 b = p; // b ->1


2 不借助第3个变量

1 加减法

a = a + b // a = 3 b = a - b // b = 1 a = a - b // a = 2

2 乘除法

a = a * b // 2 b = a / b // 2 a = a / b // 1


3 异或法

// a:0000 0001 // b:0000 0010 a = a ^ b // a:0000 0011 b = a ^ b // b:0000 0001 a = a ^ b // a:0000 0010


对上面各种方法,中间变量需要额外的内存空间;
加减法和乘除法有可能出现越界,或被除数为0的情况,而且只适用于数字运算;
比较好的是最后1种,内存低层操作,通用的各种数据类型。

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生