【C两数交换】实现ab交换居然有三种方法?

简介: 【C两数交换】实现ab交换居然有三种方法?

如果不引入第三个变量,你还有几种方法交换ab两个数?

int a=10;
int b=20;
怎么交换a,b?

1.引入临时变量temp(引入第三变量)

优点:便于理解,推荐使用

int temp=a;
a=b;
b=temp;

2.a+b法(不引入第三变量)

缺陷:加法在二进制运算中,当a,b数值本来就比较大时,可能进位,就会造成溢出

a=a+b;
b=a-b;
a=a-b;

🍉运算步骤:

3d8227aeed7342729abe1308fd8cb57e.png

🍉运行结果:


78d564eaee874964beafd071e0759ffb.png

3.a^b法(不引入第三变量)

想详细了解异或^,请移步位运算

较第一种方法缺点:难理解

较第二种方法优点:不会进位,不会溢出

a=a^b;
b=a^b;
a=a^b;

🍉运算步骤:

1a1e19f0c62a424ba14801a3bfab8f87.png


🍉运行结果:

bc7dd8a1e4594e418e842eea3e9eddee.png


🍉方法二和方法三相似点和记忆:左侧都依次是aba


00c5ba986e154c4b8ad3046cf8f5ba3d.png


目录
相关文章
交换两个数的值的方法(三种)
交换两个数的值的方法(三种)
64 1
不使用第三变量。如何对2个数进行交换
不使用第三变量。如何对2个数进行交换
78 0
剑指offer_数组---调整数组顺序使奇数位于偶数前面
剑指offer_数组---调整数组顺序使奇数位于偶数前面
52 0
判断一个数是否是对称数(数组/非数组解法)
判断一个数是否是对称数(数组/非数组解法)
交换字符串的顺序
当我们想要交换一个字符串的顺序,我们应该怎么做呢,例如“abcdefg”我们要转化为“gfedcba”,那我们来看看下面的代码
|
存储 算法
交换算法(交换两个数字)
交换算法(交换两个数字)
86 0
【随笔】数组元素使用异或交换位置的算法引发的思考
【随笔】数组元素使用异或交换位置的算法引发的思考
输入一个整形数组,实现一个函数,来调整该数组中数字的顺序//使得数组中所有奇数位于数组的前半部分,所有偶数位于数组的后半部分
输入一个整形数组,实现一个函数,来调整该数组中数字的顺序//使得数组中所有奇数位于数组的前半部分,所有偶数位于数组的后半部分
133 0
AcWing 811. 交换数值
AcWing 811. 交换数值
46 0
AcWing 811. 交换数值