CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

详细探讨如何不通过第三方变量实现两个变量互换-源码交易平台丞旭猿

前言

在外面编程中经常会遇到需要将两个变量进行交换,特别是在排序的时候更是避免不了,今天和大家分享一下两个变量交换的时候几种办法。

第三方变量过渡

我们最常用的办法可能就是引入我们的第三方变量,实现两个变量的互换,就比如如果我们需要交换两个整型变量(a ,b)的值我们通常会引入第三方的变量temp,交换过程如下:

inta=10;intb=20;inttemp=0;temp= a;a= b;b= temp;

这样简单的几步就实现了我们的两个变量互相交换,很显然对于初学者来说这种办法是很友好的,但是随着我们开发的需求,有时候可能需要的节约内存空间,尽量不去在申请变量,这时候我们该怎么办呢?

我们接下来看一下几种不用第三方变量实现两个变量互换的方法。

通过加减法运算实现

第一种不通过第三方来实现两个变量交换并且很容易理解的可能就是这种运算法了,接下来和大家很详细地去讲解:

A=A+B;B=A-B;A=A-B;

我们看一下上面的三个算式是不是简单易懂,可能很多人最开始的疑问就是后面两个式子怎么是一样的都是(A-B)那么他们的计算结果不是一样的么?接下里我们带入两个具体的值解开你的疑惑。

首先我要强调你一点的是,我们的程序是按行执行,从上到下执行的这就够了,我们假设:A=10; B=20;

第一个式子:A=A+B->(A=10+20)此时我们A不是原来的10了而是被重新赋值变成了30。

第二个式子:B=A-B->(B=30-20)此时我们的B也不是最开始的20了而是经过计算被重新赋值成10;

第三个式子:A=A-B->(A=30-10)这时候计算结果是10,然后把它赋值给了A,到现在我们的A和B就已经完成了互换了。

两个变量的异或运算

我们先来看一下我们的算式再慢慢解释。

A=A^B;B=A^B;A=A^B;

这三个式子一看等号右边的都是一样的,它真的可以实现两个变量的交换么?你还是要想一下我刚刚的提示,代码是从上往下执行,执行完每一句,可能变量已经不是原来的值了。接下来我详细讲述我们的异或运算它到底是怎么实现互换的;

异或运算

异或运算需要我们将变量数据换算成二进制然后按位异或我们来看一下异或的计算规则:(不同为真,相同为假)

0^0 = 0 、0^1 = 1、1^0 = 1、1^1= 0;我们按这样的规则把A = 5; B=10;按上面交换的式子进行异或运算看看结果;

A=5,换算成二进制是:0101;

B=10,换算二进制是:1010;

第一个式子:A=A^B; A=1111;

第二个式子:B=A^B; B=0101=5;此时B的值已经为5;

第三个式子:A=A^B;A=1010=10此时A的值已经为10;

这样我们就完成了A和B不借助第三方变量而实现交换的运算了。

总结

我相信除了以上几种交换方法外还有很多不同的交换方法,比如之前通过查找资料就看到可以通过指针地址的操作来实现交换,但是对于初学者来说可能利用指针交换不太好理解,感兴趣的读者可以自己去尝试,你有什么好的方法也可以分享出来大家一起学习与进步。

声明:本文部分素材转载自互联网,如有侵权立即删除 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容