两个数交换的六种方法

一般我们交换两个数常借助第三个变量,那么不借助第三个变量怎么交换呢,今天来试一试。

  第一种方法,借助第三个变量

1 int c =a;
2     a = b;
3     b =c;

  

  第二种方法

1 a= a + b -(b = a);

  

  第三种方法

1 b = a + (a = b)*0;

  

  第四种方法

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

  第五种方法,不过需要注意两个相乘数比较大的话容易超出int型的范围。

1 a = a*b;
2 b = a/b;
3 a = a/b;

  第六种方法,两个相同数异或结果是0,效率更高,推荐使用。

1 a = a^b;
2 b = a^b;
3 a = a^b;

原文地址:https://www.cnblogs.com/linliquan/p/10514004.html

时间: 2024-10-13 11:00:32

两个数交换的六种方法的相关文章

位运算和关于两个数交换的多种方法

我们知道,位运算在计算中有着广泛的应用. 在计算机的各种编程语言中位运算也是一种不可缺少的运算,尤其是在计算机的底层实现代码中. 以下我们就来介绍一下位运算. 1.左移运算<<  左移右移都是移动二进制数 0000-0000 0000-0000 0000-0000 0000-1100     =12 向左移动一位变为(右边缺几位就补几个0) 0000-0000 0000-0000 0000-0000 0001 1000       =24 再向左移一位 0000-0000 0000-0000

java 两个数交换问题

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

两个数交换问题

在很多编程语言中,我们大部分使用的都是值传递,然而值传递并不能真正地改变参数的数值. 下列值传递方法无法实现两个数的交换: void swap(int a,int b) { int t; t = a; a = b; b = t; } C语言版: //指针 void swap(int *a,int *b) { int temp; temp = *a; *a = *b; *b = temp; } C++: //通过引用实现,实质上是传送地址行参来实现两个整数的交换的 void swap(int &a

两个数交换的三种方式

记得刚开始学C++的时候,也做过两个数的交换,当时只用过下面的第一种和第三种方法,今天在看传智播客Java视频教程的时候,学到了另两种方式 假设a=10,b=20,交换a,b的值 方法一,使用第三方的变量,也是最常用的方法 int c=a; a=b; b=a; 方法二,位异或运算 a=a^b; b=a^b; //a^b^b=a a=a^b; //a^b^a=b 方法三,变量相加 a=a+b; b=a-b; a=a-b; 方法四,一句话搞定 b=(a+b)-(a=b); 在实际的工作中常用的还是第

交换两个数的三种方法

// demo4.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void swap1(int &a,int &b) //使用引用 { int temp; temp=a; a=b; b=temp; } void swap2(int &a,int &b) //不依靠外部变量 可能会越界 { a=a+b; b=a-b; a=a

很有意思的一种两个数交换的方法

1 int i = 26; 2 int j = 47; 3 i = i ^ j; 4 j = i ^ j; 5 i = i ^ j; 6 System.out.println(i); 7 System.out.println(j); 8 }

交换两个数的几种方法

第一种:利用第三方变量 1 int a = 10, b = 12; 2 int temp = 0; 3 temp = a; 4 a = b; 5 b = temp; 6 Console.WriteLine( a); 7 Console.WriteLine( b); 第二种:加加减减法 1 int a = 10, b = 12; 2 a = a+b;//a=22 3 b = a-b;//22-12=10 4 a = a - b;//22-10=12 5 Console.WriteLine( a);

6.两个数交换

package test; public class TestChange { public static void main(String[] args) { int num1=5; int num2=6; System.out.println("交换前:"); System.out.println("num1:"+num1); System.out.println("num2:"+num2); int temp=num1; num1=num2

两个数交换

void Swap(int *a, int *b) { int c = *a; *a = *b; *b = c; }