交换算法经常使用的两个数的值
交换两个变量值,老话题,下面总结的各种方法是。
为了方便,首先定义两个变量。
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的提醒)。
版权声明:本文博主原创文章。博客,未经同意不得转载。
交换算法经常使用的两个数的值相关推荐
- 【java】java 如何不使用第三个变量来交换两个数的值
文章目录 1.概述 2.方案 2.1 算术运算 2.2 位运算 1.概述 今天是一个悲伤的一天,我的悲伤逆流成河.非常非常的悲伤.主要是有这个一个面试题.如何不使用第三个变量来交换两个数的值. 考官说 ...
- C语言异或交换两个数的原理解析-大厂面试题:不使用第三变量交换两个数的值
常用操作交换两个数的值 常用的交换两个数值的方法一般是采用第三个变量,这种方法简单易懂,用代码举例 int main() {//交换两个整形变量int a = 3;int b = 5;int c = ...
- 不用中间变量交换两个数的值
交换两个数的值是一件非常简单的任务,如果交换a与b,我们一般这样做: tmp = a; a = b; b = tmp; 如果不用中间变量tmp,有以下两种方法: 方法1: a=a+b; b=a-b; ...
- C语言使用函数交换两个数的值
代码分析 下面先举两个常见的错误例子 例一 #include <stdio.h>void change(int a, int b);int main() {int a = 1;int b ...
- 在一个数组中找 差值最大的两个数 差值最小的两个数 推广到 点对
先求差值最大的: 1.找出最大值和最小值 然后做差, 每次比较相邻的两个数(比如先0,1 然后2,3),然后每次比较记录下最大和最小的差值,可以比较1.5N次得到结果,和分为奇数偶数位比较一样的复 ...
- java 交换两个数的值(临时变量,加减,异或)
临时变量 开发中一般使用此方式 加减 第二种写法: //3.使用加减d1=d1+d2;d2=d1-d2;d1=d1-d2;System.out.println("d1="+d1+& ...
- C语言交换两个数的值与形参与实参理解
C Simple Swap Program – Assignments 通过赋值来实现交换变量 vi swap_simple0.c #include <stdio.h>int main() ...
- leetcode算法题--数组中两个数的最大异或值
原题链接:https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/ 1.方法一:暴力法 func findMax ...
- C语言实现交换两个数
方法一:最普通方法--建立临时变量 思路分析:建立一个临时变量,通过temp=a,a=b,b=temp来实现交换. 缺点:这只是一种假交换,由于这只是在函数内部临时变量间的交换,所以当函数退出,函数栈 ...
最新文章
- Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议
- 瑞柏匡丞_移动互联的发展现状与未来
- [CDA数据分析师学习之路] 【CDA就业班独家发布】学习之路
- 创建 overlay 网络 - 每天5分钟玩转 Docker 容器技术(50)
- LeetCode 581. 最短无序连续子数组(排序单调栈)
- 睡眠多少分钟一个循环_睡眠分为几个阶段每个阶段大概多少时间?
- RPA目前在中国的发展怎么样?
- redistemplate hash 过期时间_Redis过期监听——订单超时-取消
- 拳魂觉醒服务器维护怎么办,拳魂觉醒 哪些不为人知的的小秘密
- 拓端tecdat|R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数
- 新起点、新目标--获得MVP后的感悟
- 华为2288服务器怎样查看硬盘,华为RH2288H V2磁盘系统测试_华为 FusionServer RH2288 V2_服务器评测与技术-中关村在线...
- 卫星电话是直接与卫星通信还是通过地面站?
- 幼儿园计算机和网络安全情况,幼儿园网络安全自查报告
- 小小屋影视全网搜索在线播放工具
- 崩坏3桌面版怎么更换服务器,崩坏3【桌面版】安装常见问题解决办法
- 真正的高手,都懂得构建自己的知识体系
- 关于 RabbitMQ,应该没有比这更详细的教程了
- 《飞机大战小游戏(Java)》
- CHIL-SQL-UNIQUE 约束