不经过第三变量,两个数交换问题

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

总结了一下,不经过第三个变量,实现两个数交换的方法,其实原理都大同小异。

class Program
	{
		static void Main(string[] args)
		{
			int a = 8, b = 2;
			Program.exchange1(ref a, ref b);
			Console.Write("a:{0},b:{1}", a, b);
		}


		private static void exchange1(ref int a, ref int b)
		{
			a = a + b;
			b = a - b;
			a = a - b;
		}

		private static void exchange2(ref int a, ref int b)
		{
			a = a - b;
			b = a + b;
			a = b - a;
		}

		private static void exchange3(ref int a, ref int b)
		{
			a = a ^ b;
			b = a ^ b;
			a = a ^ b;
		}
	}


关于用指针交换两个数 关于用指针交换两个数 西邮Linux 兴趣小组又到了纳新季,作为一个老学长,面试学弟学妹们的时候,必然要然他们感受到小组的关怀(受尽折磨),这一届孩子还是挺强的,但是一到指针上就栽了坑,在加上我们小组的陈年老题swap屡试不爽。所以在这里总结一下关于用一级 二级指针交换两个数字的问题。 一级指针交换 #include<stdio.h> int swap(int *c , int *... 阅读详情

相关推荐

Python 不同种方法进行两个数的交换

Python 两数交换的三种方法!!

三毛与海子的博客 5023

两个变量值交换,不经过第三个变量

int a = 3, b = 8; a = a ^ b; b = a ^ b; // (a^b)^b a = a ^ b; // a^(a^b) System.out.println("a=" + a); System.out.println("b=" + b);

依天道,行自然 421

交换两个变量的值,不使用第三个变量(两种方法)

//交换两个变量的值,不使用第三个变量。 //有两种解法, 一种用算术算法, 一种用^(异或) //异或:相同为0,不同为1。相当于减法。 #include int main() { int a = 8; int b = 9; printf("初始状态:a = %d, b = %d\n",a,b); a = a + b; b = a - b; a = a - b;

C语言是最好的编程语言 6074

数字化车间智能排产调度挑战赛(一)—— 数学模型

科大讯飞——数字化车间智能排产调度挑战赛。

Lyyyp的博客 5648

中国全国地面站点数据(1981-2010)、月平均气象、月平均降水、月平均相对湿度、月最大降水、月最高温度最低温度、月最高温平均值最低温平均值、高低温站点基础数据,气候数据

中国全国地面站点数据(1981-2010)、月平均气象、月平均降水、月平均相对湿度、月最大降水、月最高温度最低温度、月最高温平均值最低温平均值、高低温站点基础数据 b_china_mon_avg_data_pressure月平均气象 b_china_mon_avg_data_rain月平均降水 b_china_mon_avg_data_rhu月平均相对湿度 b_china_mon_max_data_rain月最大降水 b_china_mon_max_min_data_tem月最高温度最低温度 b_china

无极低码 2万+

交换两个整数的值,不使用第三变量让两个数交换

这段 C 语言代码的主要功能是交换两个整数变量a和b的值,并在交换前后分别输出这两个变量的值。这段 C 语言代码的核心功能是实现两个整数变量a和b值的交换,并且在交换前后分别输出这两个变量的值。与常规使用临时变量交换值的方法不同,此代码运用了按位异或运算符来完成交换操作。

qinyuz的博客 1145

SARScape实战:集成GACOS数据优化InSAR大气校正全流程

本文详细介绍了如何在SARScape软件中集成GACOS数据,以优化InSAR大气校正的全流程。通过实战步骤,从GACOS数据申请、下载、导入,到在单景干涉图和SBAS-InSAR流程中应用,有效剥离大气相位延迟,显著提升形变监测结果的精度与可靠性,实现从“雾里看花”到“拨云见日”的转变。

weixin_28419039的博客 397

不使用第三变量交换两个变量的值

在 Java 中,经常会需要交换两个变量的值,我们一般是使用第三变量完成,比如这样的写法确实能达成目标,但因此而引入了第三变量,对资源的消耗增加了。这里总结了两种不使用第三变量实现的方式这两种方法仅为个人总结,不能断定只有这三种,非常希望大家能提出其他的方式,互相学习。

天河有尽后为涯,星海无边前作岸。 2639

ffmpeg 4.4 cenc-aes-ctr 加解密 MP4 工程性质分析

ffmpeg 4.4 cenc-aes-ctr 加解密 MP4 工程性质分析

Dream_Dynasty的博客 3045

当MATLAB遇见ROS2:一场跨平台实时仿真的技术融合与创新实践

本文探讨了MATLAB/Simulink与ROS2在跨平台实时仿真中的技术融合与创新实践。重点介绍了在Windows+WSL2异构环境下构建高可靠性联合仿真系统的架构设计、PX4仿真环境与DDS中间件的集成方法,以及MATLAB R2024b对ROS2深度集成的实战技巧,为复杂机器人系统的开发提供了高效解决方案。

rum55的博客 244

【c++]——两个数交换的函数

两个数的交换在我们编程过程中是常常遇到的,这篇文章就让我们来好好的理解一下这个函数的使用吧~ 函数形式参数到实际参数之间的传递有很多种,其中包括了值传递、参数传递、指针传递、引用传递等等。 下面有五种函数,请问哪个能成功? 第一种: void swap1(int p,int q) { int temp; temp = p; p = q; q = temp; } int main() { ...

qq_43412060的博客 8173

Unity-RetargetPro3-动画插件试用

一个名气大于实战的插件。

大话程序员 710

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

常用操作交换两个数的值 常用的交换两个数值的方法一般是采用第三个变量,这种方法简单易懂,用代码举例 int main() { //交换两个整形变量 int a = 3; int b = 5; int c = 0;//第三个变量 printf("交换前:a=%d b=%d\n", a, b); c = a; a = b; b = c; printf("交换后:a=%d b=%d\n", a, b); return 0; } 这么简单的题目肯定不是面试官想要的,所以就引出了这次要

大牛好我是小小白的博客 1023

《UDS/OBD诊断需求编辑工具》总目录

目录 1 基于CANdela Studio编辑CDD诊断描述文件 2 基于ODX Studio编辑ODX/PDX文件 2.1 编辑ODX-D诊断描述文件 2.2 编辑ODX-F刷写软件 该专栏主要负责介绍CANdela Studio和ODX Studio编辑CDD/ODX/PDX诊断描述文件。 1 基于CANdela Studio编辑CDD诊断描述文件 2 基于ODX Studio编辑ODX/PDX文件 【ODX介绍 】-1- 标准梳理 【ODX介绍】 -2-如何手..

「汽车电子助手」的博客 1万+

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

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

Java中不借助第三变量互换两个数的值

** Java中不借助第三变量互换两个数的值 ** 我们先看看使用第三变量的方法。(开胃菜) class Swap{ public static void main(String[] args){ int a = 3; int b = 5; int c; c = a; //把a的值先存到c a = b; //把b存给a b = c; //把存在c的值倒赋给b System.out.p

weixin_54805744的博客 767

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

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

如何不使用第三个变量来交换两个数的值

参考链接:https://www.cnblogs.com/zxpp/p/4501377.html   最近在看《c++从入门到精通》自学c++,里面有一道课后题是如何做到不适用第三个变量来交换两个数的值,以下是我在网上查找到的资料,记录下并作为笔记。       题目:a=10,b=15,将a / b的值互换。       通常我们的做法是(尤其是在学习阶段):定义一个新的变量,

李昊的博客 7485

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

不引入第三变量交换两变量值的四种方法

不引入第三变量来交换变量值,其中最常用的就应该是位运算了: int a=10=1010,int b=12=1100, a=a^b;//1010^1100=0110 b=a^b;//0110^1100=1010 a=a^b;//0110^1010=1100; 此算法能够实现是由异或运算的特点决定的,通过异或运算能够使数据中的某些位翻转,其他位不变,类似牌的的翻转,其实...

diaobin0154的博客 790

[C语言] 关于数值交换但不使用第三变量

//利用第三变量,交换两变量的值int a=10;int b=20;int tmp;{tmp=a; a=b; b=tmp;}//不使用第三变量,交换两变量的值(1)int a=10; int b=20; { a=a-b; b=b+a; a=b-a; }(2)int a=10; int b=20; { ...

sh_run的博客 385

异或交换两个数

异或交换两个数 a和b是两个整数,经过以下三次异或操作,可以达到交换目的: a = a ^ b; b = a ^ b; a = a ^ b; 首先要理解,什么是^(异或)操作 二进制两数运算结果:   0 ^ 0 = 0   0 ^ 1 = 1   1 ^ 0 = 1   1 ^ 1 = 0 相同为0,不同为1 假设: a = 10 , 其二进制数为: 1010 b = 12 , 其二进制...

Mr.魏 6289

交换两个变量的值,用第三变量,用函数

#include<stdio.h> int main()//这是用第三变量交换,这种效率是最高的 { int a=3; int b=5; int tmp=0; tmp=a; a=b; b=tmp; printf("a=%d,b=%d\n",a,b); return 0; }

qq_35118894的博客 1663

不使用第三变量。如何对2个数进行交换

import java.util.Scanner; public class Question3 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.print("请输入第一个数:"); int...

BookSea的博客 324

不用引入第三变量交换两个变量的值

前几天发现了一个问题:有人告诉我,要进行变量交换,就必须引入第三变量! 假设我们要交换a和b变量的值,如果写成 int a=5,b=10; a=b; b=a; 那么结果就是两个都是10,理由不言而喻。 所以就应该引入第三变量,在a的值被覆盖之前就把a的值保留好。 int a=5,b=10,tmp; tmp=a; a=b; b=tmp; 这样,就要引入了第

7988

使用异或运算来实现两个数的交换

在编程时,我们经常需要交换两个变量的值,一种常见的方式就是创建一个临时变量,通过赋值操作来完成交换操作。异或运算是一种位运算,它的逻辑运算规则是:相同为0,不同为1但还有一个同或运算:相同为1,不同为0你记混淆的概率就比较大所以,异或运算可以记成无进位相加!0 ^ N == N;N ^ N = N异或运算满足交换律和结合律简而言之,进行异或运算的时候可以无视变量的顺序上面的两个性质用无进位相加来理解就非常的容易int a = 2;int b = 3;

weixin_69675605的博客 946

实现两个数进行交换的四种方法

实现三个数进行交换的四种方法 #include<stdio.h> //方法一:使用第三变量实现 void Methods1(int a,int b) { int tmp; tmp=a; a=b; b=tmp; printf("%d %d\n",a,b); } //方法二:不使用第三变量 void Methods2(int a,int b) { b=a+b; a=b-a...

Sir_H的博客 3502

三变量交换法

三变量交换法

C___b___b___的博客 1545
上一篇: List<T>.Find()方法的运用
下一篇: 内部排序之快速排序
highplayer
博客等级 码龄18年 69粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值