两数值交换

大致分为3种方式实现:

1.通过中间变量方式实现。

C = A;

A = B;

B = C;

2.通过加法方式。

实现原理:比如A有5块钱,B有10快钱。此时要A,B交换,此时就先把钱给一个人,然后减去另一个人的金额。

比如先把钱给A(此时A中的钱为总金额),然后交换后B的钱就是总金额减去之前B给A的钱。

A = A+B;

B = A-B;

A = A-B;

此方法的缺点:会造成内存溢出的情况。

3.通过位运算,异或方式(相同为0,不同为1)。

首先需要了解异或运算的一些性质

a.任意一个变量X与其自身进行异或运算,结果为0,即X^X=0

b.任意一个变量X与0进行异或运算,结果不变,即X^0=X

c.异或运算具有可结合性,即a^b^c=(a^b)^c=a^(b^c)

d.异或运算具有可交换性,即a^b=b^a

根据以上异或运算的特性可以交换两个数据,效率比之前两种方式都要高。

IF(A==B)RETURN;//先要判断2值是否相等,否则会出错,如果相等也没有交换的意义。

A = A^B;

B = A^B;

A = A^B;

补充几点常用的位运算操作:

1.判断两个整数是否相等。

(A^B)==0;

2.判断一个数是奇数还是偶数。

A&1 == 0;//偶数

A&1 == 1;//奇数

时间: 2024-08-02 00:11:13

两数值交换的相关文章

两数值交换,三种初学者方法。

第一种: public class jiaohuan { public static void main(String[]args) { int a=1,b=2; int m,n; m=a;n=b; a=n;b=m; System.out.println("a="+a); System.out.println("b="+b); }} 第二种: public class jiaohuan2 { public static void main(String[]args)

(c语法百题6)交换两数值

知识点: 用第三变量交换两个变量的值. 内容: 交换两数值 输入说明: 一行两个数 输出说明: 一行 两个数 输入样例: 若题目没有特别说明,则应该以多组测试数据方式读取,或者参考a001. 3 4 输出样例 : 4 3 #include <stdio.h> int main() { int a,b,c; scanf("%d %d",&a,&b); c=a; a=b; b=c; printf("%d %d\n",a,b); return

JavaSE7基础 使用位运算异或 进行两个变量的数值交换

jdk版本  :jdk-7u72-windows-i586系统     :Windows7编辑器   :Notepad++ v7.4.2注意事项 :博文内容仅供参考,不可用于其他用途. 代码 class Demo{ public static void main(String[] args){ int a=10; int b=20; //一般来讲,把这两个数交换可以申请一个中间变量temp //在高深一点的话,可以建立方程组 //然而,在视频教程中老师 却是这样做的... a = a ^ b;

用C语言实现数值交换

我的第一个博客,我想先从最简单的开始吧.我是一个学生,今天给大家带来的是用C语言实现两个数的数值交换,如果大家有什么问题或建议,可以给我留言.我们一起讨论一起学习,谢谢! 关于数值交换问题,我的解决方案有三种: (一)设置第三个变量帮助进行数值交换. 思路:就像两个水杯中都盛满了液体,A杯中放的是红色液体,B杯中放的蓝色液体,你需要一个空杯子C,将A中的液体倒进C中,这样A杯子空了,才能将B杯子中的液体倒入A中,最后将C杯子中的液体倒入B杯子中.最后A杯子中的液体是蓝色(来自B杯子),B杯子中液

基础练习 - 数值交换

题目 1 声明两个变量:int n1 = 10,n2= 20,要求将两个变量叫唤,最后输出n1为20,n2为10.                      (扩展*: 不使用第三个变量如何交换) 解决方案 基本方法 private static void BasicMethod() { int n1 = 10; int n2 = 20; Console.WriteLine("n1={0}", n1); Console.WriteLine("n2={0}", n2)

【Python】变量数值交换、判断数组是否含有某个元素

本来,这两个问题都属于的编程入门简单得不能再简单的问题,根本就不值得写篇记录来记录的. 一.变量数值交换 先说变量数值交换,从C语言开始,我们就知道要先设置一个临时变量,再把某元素的值覆盖此临时变量,避免临时覆盖等,如果不设置临时变量,还有位运算的交换形式 然而Python中根本就不用这么复杂,如果要交换变量e1,e2彼此的值,就下面一行代码就足矣: e1,e2=e2,e1; 比如,如下的程序: e1=2; e2=3; print "e1:"+str(e1)+",e2:&qu

实现两数交换的几种方法

#实现两数交换的几种方法: - - 1.常见的方法(采用临时变量) int x=10; int y=20; int temp=x;//定义临时变量 x=y; y=temp; - 2.异或的方法 int x=10; int y=20; x=x^y; y=x^y;//y=x^y^y=x;即y=10; x=x^y;//x=x^y^x=y;即x=20; ``` - 3.自加的方法 int x=10; int y=20; x=x+y;//x=30; y=x-y;//y=30-20=10; x=x-y;//

数值交换

public class 数值交换{ public static void main(String[] args){ int A=1; int B=2; int t=A;//中间值 A=B; B=t; System.out.print("A的值是:"+A+"\nB的值是:"+B); } } 数值交换,布布扣,bubuko.com

java 两个数交换问题

大家其实知道可以用异或来实现交换  学过C的人看如上的程序  一看以为肯定交换了 但是注意 C对表达式的计算顺序和Java是不同的  java是从左往右的  所以不对 简单修改就可以了: 交换连个数的方法 一.使用中间量  (这个就不多说了) 二.使用异或(如上) 三.使用加减法 这个不需要解释吧 java 两个数交换问题,布布扣,bubuko.com