`
sheungxin
  • 浏览: 105485 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

值交换的三种方式

阅读更多
package com.demo.algorithm.sort;

public class NumberSwap {
	
	/**
	 * 通过中间值进行交换
	 * @param a
	 * @param b
	 */
	public static void swap1(int a,int b){
		int tmp=a;
		a=b;
		b=tmp;
		display(a, b);
	}
	
	/**
	 * 两数求和然后相减的方式进行交换,x、y过大有可能超出int的最大值
	 * @param a
	 * @param b
	 */
	public static void swap2(int a,int b){
		a=a+b;
		b=a-b;
		a=a-b;
		display(a, b);
	}
	
	/**
	 * 原理:一个数异或同一个数两次,结果还是那个数
	 * @param a
	 * @param b
	 */
	public static void swap3(int a,int b){
		a=a^b;
		b=a^b;//a^b^b
		a=a^b;//a^b^a^b^b
		display(a, b);
	}
	
	public static void display(int a,int b){
		System.out.println("a="+a+",b="+b);
	}

	public static void main(String[] args) {
		swap1(5, 8);
		swap2(5, 8);
		swap3(5, 8);
	}
}
分享到:
评论

相关推荐

    不用第三方变量交换两数的值

    在编程中,交换两个数值是常见的操作,但有时我们可能会面临一种情况,即不允许使用额外的(第三方)变量来辅助交换。这个问题在各种编程语言中都有不同的解决方案,下面我们将详细探讨几种主流的方法。 首先,我们...

    不使用第三个变量进行交换的三种方式以及隐藏隐患

    在不使用第三个变量交换两个变量的值时,常见的方法有三种,分别是利用加法和减法,利用异或运算,以及利用位运算。这三种方法各自有不同的特点和潜在问题,以下是详细的知识点。 ### 1. 利用加减法交换变量 加...

    计算机网络三层交换讲解

    1. **报文处理**:三层交换机会检查IP报文头,处理IP数据包的分片与重组,调整TTL值,计算IP头校验和,并进行MAC地址解析。 2. **路由处理**:通过路由协议(如RIP或OSPF)构建和维护路由表,形成网络拓扑视图。 3. ...

    选择 插入交换三种排序方法的集合

    以上就是对选择排序、插入排序和冒泡排序这三种排序方法的详细介绍,通过这些介绍,我们不仅了解了它们的基本原理,还学习了具体的实现方式。这些排序算法在实际应用中非常有用,可以帮助我们快速地对数据进行排序。

    三层交换技术白皮书

    - **交换和路由的集成**:三层交换技术将二层交换的速度优势与三层路由的选择能力相结合,提供了一种更为高效的数据转发方式。 ##### 2.2 三层交换技术的概念 三层交换技术是在二层交换的基础上增加了三层路由功能...

    java 四种数据交换经典

    本文将详细介绍Java中四种实现整数数据交换的经典方法,并重点分析其中两种被广泛认为是经典的交换方式。 ### 一、使用临时变量进行交换 **标题与描述中的知识点:** 这种方法是最直观、最简单的方法之一,其基本...

    函数交换与宏交换的区别

    在编程领域,函数交换和宏交换是两种不同的数据交换方式,它们主要应用于C语言或类似C语言的编程环境中。这两种方法都是为了改变变量的值,但实现机制和效果有所不同。 函数交换,顾名思义,是通过调用一个函数来...

    erchashu.rar_交换 二叉树 左右子树_交换左右子树

    在二叉链表中,每个节点包含三个部分:一个用于存储节点值的域,以及两个指针,分别指向左子节点和右子节点。这种表示方式使得我们可以方便地遍历和修改二叉树。 要实现交换二叉树左右子树的功能,我们需要设计一个...

    易语言源码易语言交换变量值源码.rar

    易语言还提供了更为简便的“互换”指令,可以一步完成两个变量的值交换,无需临时变量: ```易语言 .整数变量 a = 5 .整数变量 b = 10 .互换 a, b ``` 这里,`.互换`指令直接完成了`a`和`b`值的交换。 在学习...

    XML的三种解析方式

    本篇文章将详细探讨XML的三种主要解析方式:DOM(Document Object Model)、SAX(Simple API for XML)和PULL(Pull Parsing)。 1. DOM解析: DOM解析器将整个XML文档加载到内存中,创建一个树形结构的文档对象...

    c语言swap(a,b)值交换的4种实现方法

    本文将介绍四种不同的方法来实现`swap(a, b)`函数,以便在C语言中完成值交换。 ### 方法一:使用临时变量 这是最直观且最常用的方法,通过创建一个临时变量`tmp`来存储`b`的值,然后将`a`的值赋给`b`,最后将`tmp`...

    Linux 下用户空间与内核空间数据交换的方式

    包括内核启动参数、模块参数与 sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs 和 relayfs 等,每种方式都有其特点和应用场景,开发者可以根据实际情况选择合适的方式来实现数据交换。

    变量交换的几种常见方法

    因此,经过三次异或操作后,`a`和`b`的值成功交换。这种方法不会导致溢出问题,但需要注意的是,如果`a`和`b`指向同一个内存地址,这种方法将不起作用。 #### 使用指针和地址进行变量交换 对于更高级的操作,可以...

    啊哈C语言 第8讲 逻辑挑战1:交换小房子中的数.pdf

    代码中展示了如何通过一个临时变量t来完成变量a和b之间的值交换。首先将a的值赋给t,然后将b的值赋给a,最后将t的值(此时仍为a的原始值)赋给b。这种方法简单直观,但需要额外的空间来存储临时变量。 第二种方法是...

    交换两个变量的值,不使用第三个变量的方法及实现.pdf

    本文主要介绍了四种不使用第三个变量来交换两个变量值的方法,适用于C/C++编程语言。 1. **算术运算**: 这种方法基于算术运算,例如加减法或乘除法。通过巧妙地使用算术运算,可以在不借助额外变量的情况下完成...

    线性表前后元素交换

    在实际应用中,线性表可以采用顺序存储或链式存储两种方式实现。 #### 1.1 顺序存储 顺序存储是指通过数组来表示线性表,其中数组中的元素按照其在线性表中的位置依次存放。对于长度为n的线性表,我们可以通过下标0...

    Python3之不使用第三方变量,实现交换两个变量的值

    本文介绍了两种在Python中不使用第三方变量交换两个变量值的方法。第一种方法利用了Python中的元组赋值特性,简洁且高效;第二种方法则通过基本的算术运算来实现,虽然简单明了,但在某些特殊情况下可能不是最优选择...

    C语言函数调用三种方式 传值调用,引用调用和传地址调.doc

    所以,当`*px`和`*py`的值交换后,`a`和`b`的值也会随之交换。输出结果为`*px=6, *py=4`,以及`a=6, b=4`。 3. 引用调用(Passing by Reference) C语言不直接支持引用调用,但C++语言中有。引用调用类似于传地址...

    两个数据的交换

    在计算机编程领域,数据交换(或称值交换)是指将两个变量中的值进行互换的过程。这是编程中最基本的操作之一,在多种场景下都有应用,比如排序算法、数组元素位置调整等。 ### 常用的数据交换算法 #### 经典算法...

    交换两个变量的值,不使用第三个变量的方法及实现.docx

    在编程中,交换两个变量的值是一个常见的任务,但有时我们可能希望避免使用第三个临时变量。本文探讨了几种不依赖额外变量实现交换的方法,主要针对C/C++编程语言。 1. **算术运算**: 算术运算方法利用加减法或乘...

Global site tag (gtag.js) - Google Analytics