zoukankan      html  css  js  c++  java
  • 不借用第三变量,互换两个变量

    下面列出几种方法:

    1)算术运算

    1 int a,b;
    2 a=10;b=12;
    3 a=b-a; //a=2;b=12
    4 b=b-a; //a=2;b=10
    5 a=b+a; //a=12;b=10

    它的原理是把A,B看作是数轴上的点,围绕两点间的距离来进行运算。

    缺点:因为是int类型,有可能造成数据溢出。

    2)指针地址操作

     1 if(a<b){
     2 a=(int*)(b-a);
     3 b=(int*)(b-(int(a)&0x0000ffff));
     4 a=(int*)(b+(int(a)&0x0000ffff));
     5 }
     6 else{
     7 b=(int*)(a-b);
     8 a=(int*)(a-(int(b)&0x0000ffff));
     9 b=(int*)(a+(int(b)&0x0000ffff));
    10 }

     

    3)位运算

    1 int a=10,b=12; //a=1010^b=1100;
    2 a=a^b; //a=0110^b=1100;
    3 b=a^b; //a=0110^b=1010;
    4 a=a^b; //a=1100=12;b=1010;

    4)利用栈的先入后出实现

    1 int exchange(int x,int y) { 
    2      stack S; 
    3      push(S,x); 
    4      push(S,y); 
    5      x=pop(S); 
    6      y=pop(S); 
    7 }
  • 相关阅读:
    Sky
    MyEclipse 10中文汉化教程
    算法
    查找众数
    格雷码算法
    commons-email
    java
    IO端寻址
    存储器
    汇编顺序程序设计
  • 原文地址:https://www.cnblogs.com/HuiH/p/11676342.html
Copyright © 2011-2022 走看看