常用算法之交换两个数的值
来源:程序员人生 发布时间: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种,内存低层操作,通用的各种数据类型。
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠