每日算法(4)——两个变量交换

标签: 变量交换
2人阅读 评论(0) 收藏 举报
分类:

1、算法思路

(1)利用中间变量交换数据
(2)两个数先进行求和,然后相减进行数据交换
(3)利用位运算的方式进行数据交换(一个数异或同一个数两次,结果还是那个数)

2、具体代码

package com.peter.algorithm.other;

import org.junit.Test;

public class VariablExchange {
    @Test
    public void test() {
        swapByTempVariable();
        swapBySum();
        swapByBitOperation();
    }

    //利用中间变量交换数据
    public static void swapByTempVariable() {
        int a = 3, b = 5;
        System.out.println("swapByTempVariable before exchange! a:" + a + " b:" + b);
        int temp = a;
        a = b;
        b = temp;
        System.out.println("swapByTempVariable after exchange! a:" + a + " b:" + b);
    }

    //两个数求和然后相减的方式进行数据交换
    private static void swapBySum() {
        int a = 3, b = 5;
        System.out.println("swapBySum before exchange! a:" + a + " b:" + b);
        a = a + b;
        b = a - b;
        a = a - b;
        System.out.println("swapBySum after exchange! a:" + a + " b:" + b);
    }

    //利用位运算的方式进行数据的交换(一个数异或同一个数两次,结果还是那个数)
    private static void swapByBitOperation() {
        int a = 3, b = 5;
        System.out.println("swapByBitOperation before exchange! a:" + a + " b:" + b);
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.println("swapByBitOperation after exchange! a:" + a + " b:" + b);
    }
}

查看评论

Win2000中用户自定义IP头的实现及OicqSend完整实例源程序

Win2000中用户自定义IP头的实现及OicqSend完整实例源程序by孤独剑客E-mail: janker@371.net HomePage: http://janker.126.com一、引子 ...
  • yagami
  • yagami
  • 2000-09-06 23:26:00
  • 880

只用两个变量来互换这两个变量的值

# include using namespace std; int main() { int a, b; cin >> a >>b; a = a + b; b...
  • a191030148
  • a191030148
  • 2012-10-28 21:01:25
  • 572

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

这需要进行位操作,必较麻烦的, 在学习程序语言和进行程序设计的时候,交换两个变量的值是经常要使用的。通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下: int a,b;...
  • bird67
  • bird67
  • 2008-10-30 19:34:00
  • 8999

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

如果要交换两个变量的值,我们首先想到的就是定义一个第三方变量暂存其中一个变量的值:                   如果我们不使用第三方变量怎么交换两个变量的值呢?          ...
  • pt666
  • pt666
  • 2017-04-23 19:59:15
  • 1386

用异或实现两个变量的互换

一般实现两个变量之间的互换要用第三个变量,这样做可以,但创建新变量,增加了系统开销。如果要交换的变量时两个整数型变量,可以用更高效的方法。例如:^(异或)操作,举例如下: import java.ut...
  • Jerry_1126
  • Jerry_1126
  • 2014-02-24 17:51:06
  • 991

JS——交换两个变量(不使用第三个变量的情况下)

1、a^=b;b^=a;a^=b;  //只适用number类型 2、a+=b;b=a-b;a-=b; //只适用number类型 3、b=[a,a=b][0]; //多种类型 4、[a,b] ...
  • spfLinux
  • spfLinux
  • 2017-11-21 09:33:45
  • 106

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

原文出处: http://blog.163.com/jian_xiong/blog/static/19193236320130604848997/ 通常我们的做法是(尤其是在学习阶段...
  • Hello_Mars
  • Hello_Mars
  • 2015-07-27 20:51:48
  • 296

不使用中间变量交换两个数值型变量的值

  记得第一次接触“不使用中间变量交换两个数值型变量的值”这个概念是在学习算法的时候,课本后有这样一道课后题,当时想到的方法就是现在所说的加减法。后来在编程和学习的过程中又发现了几种方法,特写此帖,总...
  • AlwaysSLH
  • AlwaysSLH
  • 2009-05-19 16:02:00
  • 8761

不使用第三方变量交换两个数值变量的值(java语言)

面试时有时候会遇到的面试题,但其意义没多大!本文来源网络,整理由jast。 方法一、二 参考:此处 方法三 参考:此处 方法一、算术运算 简单来说,就是通过普通的+和-运算来实现。代码如下:  int...
  • HelloWorld90
  • HelloWorld90
  • 2014-02-24 14:51:27
  • 887

交换两个整数值,不用临时变量

交换两个值,不用临时变量?我们通过位运算中的异或来实现。  //测试代码为C语言代码 前置知识: 1.一个整数自己跟自己异或,结果为0   //因为异或的法则为,相同为0,不同为1,注意这里所说的...
  • friendan
  • friendan
  • 2013-05-21 11:41:40
  • 2886
    个人资料
    等级:
    访问量: 722
    积分: 137
    排名: 116万+
    文章分类
    文章存档