交换两个数的算法

【算法】不借助第三个变量实现交换两个数的值 算法课上老师讲了通过异或位运算实现不借助第三个变量交换两个数的值,课后整理博客时又查到一种通过加减运算也可以实现不借助变量来交换 阅读详情

交换两个数的操作在编程中十分常见,下面总结一下几种方法:(假设要交换的两个数为a和b)


方法一:利用临时变量

tmp = a;
a = b;
b = tmp;

方法二:利用加减法或者乘除法

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

或简写成

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


用乘除法的

a = a * b;
b = a / b;
a = a / b;

此法缺点:容易溢出。

方法三:利用异或运算
a = a ^ b;
b = a ^ b;
a = a ^ b;

此法不容易溢出,而且方便好记,更绝的是,可以简写为一行微笑:

a ^= b ^= a ^= b;

原理:
a ^ a = 0;
a ^ 0 = a;

其实利用这个原理,异或运算还有很多其他的用途,比如要从一堆数里面找出不是重复偶数次的一个数,只需要把这堆数逐个异或一遍,最后得到的结果就是要求的那个数了。



算法实现两个数交换(多种方法) 阅读详情

相关推荐

如何利用Arcgis进行地统计学分析(三):空间插值方法选择与优化

本文深入探讨了在Arcgis中进行地统计学分析时,如何根据探索性数据分析(EDA)结果科学选择与优化空间插值方法。文章对比了IDW、RBF、克里金等主流方法的适用场景与核心参数,并通过实战案例详解了从数据诊断到模型调优的完整流程,强调结合半变异函数与趋势分析进行“对症下药”,以提升插值结果的精度与可靠性。

weixin_29281915的博客 120

三种交换两数的方法

三种交换两数的方法 有两种不需要创建临时变量;

anayi的博客 767

平衡小车动力学建模

两轮自平衡小车由车体和双轮两部分组成,可以看成一个移动的倒立摆,分别对车轮和车体进行力学分析,建立动力学模型,最后,通过对两者的分析给出系统的状态空间表达式。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kjiPEUVJ-1679470559950)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20230322110521545.png)]

qq_23096319的博客 9056

详解交换两个数的五种思路

目录 •写在前面 •利用新变量 •利用加减法 •利用乘除法 •利用异或 •利用移位 •写在前面 交换两个数?听起来这不是很简单嘛,感觉没什么好讲的。不过这么想是因为很多时候都想简单了,没有把编程的巧妙使用到极致,那么接下来我们来看看,交换两个数这么简单的问题,怎么玩出不一样的花出来,哈哈哈。 •利用新变量 这种方法是非常非常基本的一种方式,直接利用一个新的变量作为中介,交换两个...

BoCong-Deng的博客 1万+

C#里用HttpListener实现WEB API接口服务端

本文介绍了一个基于WinForm的HTTP服务实现方案。该方案使用HttpListener类创建了一个支持JSON POST请求处理的轻量级Web服务器,主要特点包括:1) 纯线程方式实现请求监听和处理;2) 提供标准化的JSON响应格式;3) 支持自定义请求处理逻辑;4) 包含完整的日志记录功能。代码示例展示了如何初始化服务、处理不同类型的请求(包括JSON POST),并提供了线程安全的UI更新机制。该实现适用于需要简单HTTP接口的Windows桌面应用程序,可作为程序间通信的基础设施。

大坡3D软件开发 228

【29】软考软件设计师——SQL语句编写与优化深度精讲|数据库大题延伸满分攻略

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第29篇,承接第28篇ER图转关系模式核心内容,作为**下午第2题数据库大题核心延伸必考模块**,单模块累计占分5~8分,是数据库板块性价比极高的提分重点。全文超4000字深度拆解软考全部SQL高频考点:全覆盖多表连接底层逻辑、嵌套子查询分类实操、GROUP BY分组聚合硬核规则、索引全品类设计原理、联合索引最左匹配底层机制,搭配海量可直接复刻的考场SQL模板、历年真题完整改写案例、索引失效场景实操复盘、慢查询优化落地技巧。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 526

两个数值互换的三种算法

方法一:引入一个临时变量t t = a; a = b; b = t; 方法二:相加减(有数值越界风险) a = a + b; b = a - b; a = a - b; 方法三:异或运算 a = a ^ b; b = a ^ b; a = a ^ b; 说说异或运算,就是两个数进行异或运算,先转换成二进制数,再进行异或。当二进制位数上的数相异时为1,

keketrtr的专栏 2304

SolidWorks软件二次开发:使用C#进行SolidWorks二次开发

SolidWorks 提供的 API(应用程序编程接口)允许开发者使用多种编程语言(如 C#、VB.NET 等)来控制和扩展 SolidWorks 的功能。API 架构基于 COM(组件对象模型),这意味着开发者可以通过引用 SolidWorks 的类型库来访问其对象模型。SolidWorks 的对象模型包括了从文档、零件、装配体到特征、草图等所有 SolidWorks 中可操作的对象。

kkchenjj的博客 3217

交换算法(交换两个数字)

文章目录前言一、交换算法 前言 本文章主要介绍一个简单的交换算法。 一、交换算法 这个算法不算太难,直接上代码就完了。 #include<stdio.h> int main(void) { //交换a和b的数值 int a = 6; int temp;//中间变量 int b = 5; printf("%d,%d\n", a, b); temp = b; b = a; a = temp; printf("%d,%d\n", a, b); return 0; }

m0_49476241的博客 1361

DCMTK编译

dcmtk-3.6.4 使用Unicode?dcmtk的编译选项里没有关于Unicode的选项,OFString的接口里明确使用了OFString(char*)作为构造函数参数,所以,我们可以假设不能够自己擅自在CMakeList.txt里增加一行 add_definitions(-DUNICODE -D_UNICODE) 来强制使用Unicode编码。 亲测:加了之后编译不过 void...

C++ 爱好者 make_it_simple888 1734

【Bug已解决】Auto mode cannot determine the safety of an action — Claude Code 自动模式安全判断失败解决方案

将已知安全的操作添加到白名单,分类器不再拦截这些操作。# 步骤 1:编辑 Claude Code 配置"Read","Write"EOF# 步骤 2:白名单中的操作将自动通过# 不在白名单中的操作仍需分类器判断# 步骤 3:重启 Claude Codeclaude方案适用场景推荐指数难度方案一:手动审批偶发回退,安全优先⭐⭐⭐⭐⭐低方案二:/compact 压缩上下文超限导致⭐⭐⭐⭐低方案三:拆分步骤复杂操作触发⭐⭐⭐⭐低方案四:跳过审批隔离环境,CI/CD。

博客 1万+

交换算法

  交换(swap)算法是最基本的算法。在C/C++中共有以下四种方法实现交换算法: 传指针实现:void swap(int *p1, int *p2); 宏定义实现:#define SWAP(x,y,t)((t)=(x),(x)=(y),(y)=(t)); 传引用实现:void swap (int &a, int &b); 函数模板实现:template<class T> void swap(T &a, T &b)。   在C语言中,只能使用前两种方法实现交

大彤小忆的博客 3730

【FPGA教程案例59】深度学习案例6——基于FPGA的CNN卷积神经网络之整体实现

在课程,我们对的基本原理有了初步认识。在上一个课程,我们完成了CNN的Relu激活层、pool池化层、卷积层以及图像输入层的实现,如下图所示:在本课程中,我们将上述四个模块结合起来,构建一个简单的CNN卷积神经网络。...

FPGA/MATLAB学习教程/源码/项目合作开发 2637

用计算机算法交换两个数的位置,两个数交换算法

两个数交换算法(包含不用第3个变量而直接交换的情况)2006-12-17 20:07对两个数进行交换,在C中可采用指针实现,而在C++可使用引用来实现,无论是用指针还是引用,都要借助第3个变量。本文将介绍两种直接交换的 算法******************************* 后附有完整算法和测试程序方法一:采用整数的加(减)法实现,属于算术运算void SwapWithAri( int...

weixin_42374596的博客 1441

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

两个数交换算法

<br />两个数交换算法(包含不用第3个变量而直接交换的情况)2006-12-17 20:07对两个数进行交换,在C中可采用指针实现,而在C++可使用引用来实现,无论是用指针还是引用,都要借助第3个变量。本文将介绍两种直接交换的 算法 <br />******************************* 后附有完整算法和测试程序<br /> 方法一:<br /> 采用整数的加(减)法实现,属于算术运算<br />void SwapWithAri( int & lhs, int & rhs

偶然之间 1597

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

关于两个数交换的算法

给大家分享一个交换两个数 public static void swap(int a,int b){ a = a ^ b; b = a ^ b; a = a ^ b; }

峰峰同学的博客 705

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

两个数交换算法(不需要临时变量)

两个数交换算法(不需要临时变量) 两个数交换算法(包含不用第3个变量而直接交换的情况)2006-12-17 20:07对两个数进行交换,在C中可采用指针实现,而在C++可使用引用来实现,无论是用指针还是引用,都要借助第3个变量。本文将介绍两种直接交换的算法 ******************************* 后附有完整算法和测试程序 方法一: 采用整数的加(减)法实现,

4614

交换两个数的核心算法_艾孜尔江撰稿

交换两个数的值——核心算法赋值运算算数运算位运算 赋值运算 int a, b, temp; a = 10; b = 5; temp = a; a = b; b = temp; 算数运算 思路一 int a, b; a = 10; ...

艾孜尔江的博客 4万+

常用算法之交换两个数的值

交换两个变量的值,古老的话题,下面把各种方法做个总结。 为了方便,先定义两个变量。 int a = 1; int b = 2; 一 借助临时变量 1 交换变量值 int tmp; tmp = a; // tmp = 1 a = b; // a = 2 b = tmp; // b = 1 2 交换地址 int *p; p = &a; // tmp->1 a = &

寒风的技术博客 2064

两个数交换的异或算法

两个数交换的异或算法

doooooooollly的博客 856

简单的交换两个数的算法

void swap (int *a, int *b) { *a ^= *b ^= *a ^= *b; } int main() { int a = 1, b = 2; swap(&a, &b); return 0; }

草木相隔的博客 736

【基础算法】java实现两个数交换

java实现两个数交换的4中方法

泡^泡 433

用指针交换两个数_算法 | 双指针套路总结

双指针是一种思想,一种技巧或一种方法,并不是什么特别具体的算法,在二分查找等算法中经常用到这个技巧。具体就是用两个变量动态存储两个或多个结点,来方便我们进行一些操作。通常用在线性的数据结构中,比如链表和数组,有时候也会用在图算法中。在我们遇到像数组,链表这类数据结构的算法题目的时候,应该要想得到双指针的套路来解决问题。特别是链表类的题目,经常需要用到两个或多个指针配合来记忆链表上的节点,完成某些操...

weixin_39861823的博客 172

交换算法经常使用的两个数的值

交换两个变量值,老话题,下面总结的各种方法是。 为了方便,首先定义两个变量。 int a = 1; int b = 2; 一 借助暂时变量 1 交换变量值 int tmp; tmp = a; // tmp = 1 a = b; // a = 2 b = tmp; // b = 1 2 交换地址 int *p; p = &amp;a; // tmp-&g...

weixin_33889665的博客 118

算法:不借助临时变量进行两个数的交换

题目描述 不借助临时变量进行两个数的交换: 输入a=3,b=9,输出a=9,b=3 方法一 将a置为a,b的差值。 let a = 3; let b = 9; a = b - a; b = b - a; a = b + a; console.log(a,b) // 9 3 如果需要对该方法演算可以直接将a = b - a;代入b = b - a;即可。 方法二 使用数组。 let a = ...

圆圆的 JavaScript 博客 396
上一篇: 执行shell脚本的三种方式
下一篇: windows进程间通信
ningzero123
博客等级 码龄14年 3粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值