不用中间变量交换A和B的值

public class SwapAB {
public static void main(String[] args) {
// 两种值交换的方式,用中间变量空间复杂度高于不用中间变量,但时间复杂度要低于不用中间变量.

// 常规写两个值的交换
int a = 100;
int b = 200;
System.out.println("初始值 a=100 b=200");
// 中间变量
int c;

// 复制给中间变量,临时存
            c = a;
// 把b的值赋给a.
            a = b;
// 把c中存的a的初始值赋给,至此完成了常规的值交换
            b = c;
System.out.println("a = " + a + ", b = " + b);
// 不用中间变量的写法
            a = a + b;
            b = a - b;
            a = a - b;

System.out.println("a = " + a + ", b = " + b);

// 第二种不用中间变量,换运算,效率比加法高点
            a = a ^ b;
            b = a ^ b;
            a = a ^ b;

System.out.println("a = " + a + ", b = " + b);

}
}
时间: 2024-10-25 19:33:40

不用中间变量交换A和B的值的相关文章

不用中间变量交换a 和b的值

// 不用中间变量的写法 ,假如 a=13, b=8; a=a+b =21; //此时 a=21; b=8; b=a-b=13; //此时a=21; b=13; a=a-b=8; //相当于 a=21-13=8; // 第二种不用中间变量,换运算,效率比加法高点 a = a ^ b; b = a ^ b; a = a ^ b;

不用中间变量交换a和b的值?

a = 5 b = 6 a = a+b b = a-b a = a-b print(a,b) a = 5 b = 6 a = a^b b = b^a a = a^b print(a,b) a = 5 b = 6 a,b = b,a print(a,b) 输出 (6, 5) (6, 5) (6, 5) 原文地址:https://www.cnblogs.com/sea-stream/p/11192483.html

网络误区:不用中间变量交换2个变量的value,最高效的是异或运算.

本文记录了不使用中间变量交换2个变量的value,很多的网络留言说是直接异或运算就可以了,而且效率很高,是真的吗? 关于这个问题,网络上面有很多的解释,3种方法,我这里给比较一下各自的优缺点,然后简单分析一下汇编代码,分析代码如下: #include <stdio.h> void swap1(int &a,int &b) { int temp = a; a = b; b = temp; } void swap2(int &a,int &b) { a += b;

通过位异或来交换a,b的值和通过中间变量交换a,b的值

//通过位异或来交换a,b的值 #include <stdio.h> int main(int argc, const char * argv[]) {    int a=20,b=10;    a=a^b;    b=b^a;    a=a^b;        printf("%d",a);    printf("%d\n",b); return 0;} //通过c来交换 #include <stdio.h> int main(int ar

不用中间变量交换两个数 swap(a,b);

#include <iostream> using namespace std; int main () { int a = 3; int b = 5; cout<<"a="<<a<<",b="<<b<<endl; a = a+b; ///a=7 b = a-b; ///b=3; a = a-b; ///a=5 cout<<"a="<<a<<

不用中间变量,交换a、b值

如果要交换a.b之间的值,一般的做法是: tmp=a;a=b;b=tmp;这种方法不得不使用一个临时变量. 从网上学来一个方法,可以不用使用临时变量: a^=b^=a^=b; 这样计算之后,就可以交换a.b值 证明: 首先:^ 是 位运算 的一种: 异或 运算 1^1=0; 0^0=0; 1^0=1; 0^1=1; 将a.b用二进制表示为: a=An-1 An-2--A1 A0 b=Bn-1 Bn-2--B1 B0 由于a与b进行位运算,是各个bit位分别进行运算,互不影响,下面对某一个位值i上

不用新的变量,交换两个变量的值。

不用新的变量,交换两个变量的值.比如有2个变量a , b ,我们希望交换他们的值. 下面介绍两种不同的解法: 第一种:基于加减法 a = a + b ;   //先让a等于和 b = a - b ;  //和减去原来b的值得到原来a的值,赋值给b a = a - b : //和减去改变后b的值(原来a的值)得到原来b的值,赋值给a 第二种:基于异或运算 a = a ^ b  // 先a异或上b,赋值给a b = a ^ b  // a异或上b,消去b的影响得到原来的a,赋值给b a = a ^

PHP不用第三变量交换2个变量的值的解决方法

以前做过一道php面试题是这样的:不使用第三个变量实现交换两个变量的值.一般都是借助第三个中间变量来实现原来两个变量的值交换,但是这道题却要求不能使用中间变量,这对于初学者来说也算是一个难题了.网上找到的几种方法总结如下: 复制代码 代码如下: //字符串版本 结合使用substr,strlen两个方法实现 $a="a";$b="b";echo '交换前 $a:'.$a.',$b:'.$b.'<br />';$a.=$b;$b=substr($a,0,(

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

相信大家在PHP面试或者学习中经常会遇到这个问题就是“不用第三个变量来交换两个变量的值”,今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个变量的值. 第二种方法呢,稍加思考我们就会用到PHP中的函数来实现 第三种方法呢,我们来采用PHP中提供各种字符串分割函数来实现. 简单的题目不同的思想就会有不同的解法,期待更多的答案.