zoukankan      html  css  js  c++  java
  • 两数值交换

    大致分为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;//奇数

  • 相关阅读:
    Linux常用命令
    ServerSocketChannel和SocketChannel
    Java扫描包
    [BZOJ3874/AHOI2014]宅男计划
    [BZOJ4029/HEOI2015]定价
    [考试]20151012贪心
    [BZOJ4027/HEOI2015]兔子与樱花
    [考试]20151010
    [考试]20151009
    Test of String
  • 原文地址:https://www.cnblogs.com/zhangygl/p/4296277.html
Copyright © 2011-2022 走看看