交换两个变量值,老话题,下面总结的各种方法是。

为了方便,首先定义两个变量。

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 = &b;        // a->2
b = p;     // b ->1

二 不借助第三个变量

1 加减法

a = a + b   // a = 3
b = a - b  // b = 1
a = a - b  // a = 2

2 乘除法

a = a * b // 2
b = a / b // 2
a = a / b // 1

3 异或法

// a:0000 0001
// b:0000 0010
a = a ^ b // a:0000 0011
b = a ^ b // b:0000 0001
a = a ^ b // a:0000 0010

对于上面各种方法,中间变量须要额外的内存空间。
加减法和乘除法有可能出现越界,或者被除数为0的情况,并且仅仅适用于数字运算;

比較好的是最后一种,内存低层操作(/*通用的各种数据类型*/,这个地方是我弄错,异或仅仅能用于整型, 感谢xiacanni的提醒)。

版权声明:本文博主原创文章。博客,未经同意不得转载。

交换算法经常使用的两个数的值相关推荐

  1. 【java】java 如何不使用第三个变量来交换两个数的值

    文章目录 1.概述 2.方案 2.1 算术运算 2.2 位运算 1.概述 今天是一个悲伤的一天,我的悲伤逆流成河.非常非常的悲伤.主要是有这个一个面试题.如何不使用第三个变量来交换两个数的值. 考官说 ...

  2. C语言异或交换两个数的原理解析-大厂面试题:不使用第三变量交换两个数的值

    常用操作交换两个数的值 常用的交换两个数值的方法一般是采用第三个变量,这种方法简单易懂,用代码举例 int main() {//交换两个整形变量int a = 3;int b = 5;int c = ...

  3. 不用中间变量交换两个数的值

    交换两个数的值是一件非常简单的任务,如果交换a与b,我们一般这样做: tmp = a; a = b; b = tmp; 如果不用中间变量tmp,有以下两种方法: 方法1: a=a+b; b=a-b; ...

  4. C语言使用函数交换两个数的值

    代码分析 下面先举两个常见的错误例子 例一 #include <stdio.h>void change(int a, int b);int main() {int a = 1;int b ...

  5. 在一个数组中找 差值最大的两个数 差值最小的两个数 推广到 点对

    先求差值最大的: 1.找出最大值和最小值 然后做差,  每次比较相邻的两个数(比如先0,1  然后2,3),然后每次比较记录下最大和最小的差值,可以比较1.5N次得到结果,和分为奇数偶数位比较一样的复 ...

  6. java 交换两个数的值(临时变量,加减,异或)

    临时变量 开发中一般使用此方式 加减 第二种写法: //3.使用加减d1=d1+d2;d2=d1-d2;d1=d1-d2;System.out.println("d1="+d1+& ...

  7. C语言交换两个数的值与形参与实参理解

    C Simple Swap Program – Assignments 通过赋值来实现交换变量 vi swap_simple0.c #include <stdio.h>int main() ...

  8. leetcode算法题--数组中两个数的最大异或值

    原题链接:https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/ 1.方法一:暴力法 func findMax ...

  9. C语言实现交换两个数

    方法一:最普通方法--建立临时变量 思路分析:建立一个临时变量,通过temp=a,a=b,b=temp来实现交换. 缺点:这只是一种假交换,由于这只是在函数内部临时变量间的交换,所以当函数退出,函数栈 ...

最新文章

  1. Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议
  2. 瑞柏匡丞_移动互联的发展现状与未来
  3. [CDA数据分析师学习之路] 【CDA就业班独家发布】学习之路
  4. 创建 overlay 网络 - 每天5分钟玩转 Docker 容器技术(50)
  5. LeetCode 581. 最短无序连续子数组(排序单调栈)
  6. 睡眠多少分钟一个循环_睡眠分为几个阶段每个阶段大概多少时间?
  7. RPA目前在中国的发展怎么样?
  8. redistemplate hash 过期时间_Redis过期监听——订单超时-取消
  9. 拳魂觉醒服务器维护怎么办,拳魂觉醒 哪些不为人知的的小秘密
  10. 拓端tecdat|R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数
  11. 新起点、新目标--获得MVP后的感悟
  12. 华为2288服务器怎样查看硬盘,华为RH2288H V2磁盘系统测试_华为 FusionServer RH2288 V2_服务器评测与技术-中关村在线...
  13. 卫星电话是直接与卫星通信还是通过地面站?
  14. 幼儿园计算机和网络安全情况,幼儿园网络安全自查报告
  15. 小小屋影视全网搜索在线播放工具
  16. 崩坏3桌面版怎么更换服务器,崩坏3【桌面版】安装常见问题解决办法
  17. 真正的高手,都懂得构建自己的知识体系
  18. 关于 RabbitMQ,应该没有比这更详细的教程了
  19. 《飞机大战小游戏(Java)》
  20. CHIL-SQL-UNIQUE 约束

热门文章

  1. winform c#绑定combobox下拉框 年度代码。
  2. 一次SYN***之战之Linux如何防SYN***
  3. SQL:将查询结果插入到另一个表的三种情况
  4. PsTools在***中的一点小应用
  5. 一名新晋程序员的自述:我的编程自学之路
  6. 索引使用原则-列的离散(sàn)度
  7. 手写自己的MyBatis框架-V2.0结果集处理
  8. 百万数据报表导出:使用SXSSFWorkbook完成百万数据报表打印
  9. MapReduce分区-代码实现
  10. 商品详情及规格参数的渲染