【算法】如何不用中间变量交换两个数据?

本文介绍了两种在不使用额外存储空间的情况下,利用加法和异或运算实现变量值交换的方法,包括加法结合和异或操作,同时提到了注意事项如数据溢出和异或操作对相同数据的要求。
摘要由CSDN通过智能技术生成

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
更多算法分析与设计知识专栏:算法分析🔥
给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述


一、+ - -

使用+-完成交换:

    a = a + b;	//a = a + b组合
    b = a - b;	//b = 组合 - b = 原始a
    a = a - b;	//a = 组合值 - 原始a = b

首先,通过加法将两个变量的值组合在一起,

然后减去b来获得a的原始值,将原始的a值赋值给b

最后再减去新b就能获取到b的原始值,将原始的b赋给a,此时a和b就完成了交换

同理乘除等运算也可以

注意数据相加可能溢出

二、^

使用异或^进行交换:

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

异或:相同为0,不同为1

  • 第一步:将a和b的异或结果赋给a
  • 第二步:将结果与b异或可以得到原来的a,赋给b
  • 第三步:将结果与原来的a异或得到原来的b,赋给a,完成交换

在这里插入图片描述

注意:异或交换数据时两个数据不可以相同!

	if(a == b)return;
	a^=b;
	b^=a;
	a^=b;	

在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)
  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天喜Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值