变量交换的几种算法(算术运算、指针操作、 位运算)

学习程序语言和程序设计的时候,交换两变量的值是经常用到的。以下总结了几种交换变量的方式。

 

标准算法定义中间变量交换

int a,b,t;

a=10; b=15;

t=a; a=b; b=t;

 

算术运算:

通过+-运算来实现

int a,b;

a=10;b=12;

a=b-a;   //a=2;b=12

b=b-a;   //a=2;b=10

a=b+a;   //a=12;b=10

 

指针操作:实际上进行的是整数运算

int *a,*b;   

a=new int(10);        //给指针赋值

b=new int(20);        //a=0x00030828,b=0x00030840

a=(int*)(b-a);        //a=0x00000006

b=(int*)(b-int(a));   //b=0x00030828

a=(int*)(b+int(a));   //a=0x00030840

异或运算也能实现变量的交换

注:只有第一句是两个指针之间的计算,其他都是指针和整数的计算,否则会导致计算错误,严重导致系统出错。

位运算:

int a=10,b=12;  //a=1010^b=1100;

a=a^b;    //a=0110^b=1100;

b=a^b;    //a=0110^b=1010;

a=a^b;    //a=1100=12;b=1010;

从上面可以看出,数学中的小技巧对程序设计而言具有相当的影响力,运用得当会有意想不到的神奇效果。而从实际的软件开发看,标准算法无疑是最好的,能够解决任意类型的交换问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值