当前位置:网站首页>交换两个数的三种方法原理解析
交换两个数的三种方法原理解析
2022-06-23 12:37:00 【梦飞】
问题:交换以下两个数:
int m = 12;
int n = 5;方法一
// 方法一:提供一个临时变量。
int temp = m;
m = n;
n = temp;原理:使用第三个变量暂存其中一个值,以便交换。就像要交换两杯水,先把其中一杯水倒到第三个杯子。这是最容易想到的方法,但需要额外引入一个变量。
方法二
// 方法二:使用加减法。当m和n较大时,有可能出现精度损失
m = m + n;//m = 12 + 5;
n = m - n;//n = 17 - 5;
m = m - n;//m = 17 - 12;原理:先将m变成两个数的和,这样就和n共同存储了原来两个数的信息,通过减法将n变成原来m,此时m和n仍然可以完整保存两个数的信息,再通过减法将m变回原来的m。这个方法不容易想到,并且当m和n较大时,有可能出现精度损失。
方法三
// 方法三:使用异或。优点:没有上面两种方法的缺点。 缺点:难!
m = m ^ n;
n = m ^ n; // (m ^ n) ^ n == m
m = m ^ n; // (m ^ n) ^ m == n原理:使用异或的对称特性,与同一个数进行两次异或运算之后还是原来的数。这个方法原理类似于方法二,不需要提供第三个变量,但由于使用的是异或而不是加法,所以不会出现精度损失。
边栏推荐
- 618的省钱技术攻略 来啦 -体验场景 领取10元猫超卡!
- 「开发者说」钉钉连接器+OA审批实现学校学生假勤场景数字化
- Excel-VBA 快速上手(一、宏、VBA、过程、类型与变量、函数)
- 数据中台稳定性的“四高” | StartDT Tech Lab 18
- UI framework
- CDH mail alarm configuration
- 【网站架构】10年数据库设计浓缩的绝技,实打实的设计步骤与规范
- Qunhui 10 Gigabit network configuration and test
- State machine framework
- Stimulsoft Ultimate Reports 2022.3.1
猜你喜欢

Qt5 knowledge: string list qstringlistmodel

Part C - value types and reference types

根据你的工作经历,说说软件测试中质量体系建设

项目测试一半,需求要变更,测试人员怎么办?

Wallys/DR6018-S/ 802.11AX MU-MIMO OFDMA / 2* GE PORTS/WIFI 6e / BAND DUAL CONCURRENT

sql增加表记录的重复问题。

Lm05 former VIX (second generation product)

【网站架构】10年数据库设计浓缩的绝技,实打实的设计步骤与规范

Go寫文件的權限 WriteFile(filename, data, 0644)?

判断测试结束的标准有哪些?
随机推荐
New project, how to ensure the coverage of the test?
[system architecture] - five styles of software architecture
C#学习(高级课程)Day13——反射
Technology sharing | wvp+zlmediakit realizes streaming playback of camera gb28181
协程
C # learning (advanced course) day15 - exception handling and namespace
CDH邮件报警配置
Capacity limited facility location problem
项目测试一半,需求要变更,测试人员怎么办?
How should enterprises conduct efficient IT operation and maintenance management?
全新项目,如何保证测试的覆盖率?
AssetBundle资源管理
C#部分——值类型和引用类型
根据你的工作经历,说说软件测试中质量体系建设
R语言使用MASS包的polr函数构建有序多分类logistic回归模型、使用summary函数获取模型汇总统计信息
支持HomeKit、NFC:智汀智能门锁SL1仅需要149元
R language uses matchit package for propensity matching analysis (set the matching method as nearest, match the control group and case group with the closest propensity score, 1:1 ratio), and use matc
Analysis and solution of connection failure caused by MySQL using replicationconnection
Dataset之GermanCreditData:GermanCreditData数据集的简介、下载、使用方法之详细攻略
"Four highs" of data midrange stability | startdt Tech Lab 18