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

发布时间:2024年01月15日

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

在这里插入图片描述


一、+ - -

使用+-完成交换:

    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;	

在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'?'●)
文章来源:https://blog.csdn.net/TiSg0/article/details/135609985
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。