Fork me on GitHub
不用中间变量交换两个整型变量的值

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

在我们平常的变量值交换方法中,我们一般都是采用中间变量的方法来实现变量值在两个变量之间互换。但是对于整型变量,我们可以用其他更多的方法来实现变量值互换,比如整型变量a,b在不利用中间变量的情况下,我们可以用:a=a+b; b=a-b; a=a-b;来实现变量值互换。在这里我们介绍一种更加快速的无中间变量的交换方法,即利用异或操作来实现变量值互换。主要代码如下:

a = a^b;

b = a^b;

a = a^b;

由于异或运算满足结合律和交换律,所以我们可以很容易得出上述等式是成立的。而且用于在计算机中位运算操作明显要比加减操作更快,所以上面这种方法更快。

以下就贴出完整的参考代码:

// switchVar.cpp : Defines the entry point for the console application.
//开发环境:vs2008

#include "stdafx.h"
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
 cout<<"Please input two integer number"<<endl;
 int x,y;
 cin>>x>>y;
 cout<<"Befor switch X="<<x<<", Y="<<y<<endl;

 //用异或操作交换两个整数,经典代码
 x = x^y;
 y = x^y;
 x = x^y;

 cout<<"After switch X="<<x<<", Y="<<y<<endl;
 return 0;
}

后记:虽然这个知识点很小,但是当我们的运算复杂度很大的时候,运用这种交换方法就能体现它的优势出来了。

posted on 2013-05-27 22:19  HackerVirus  阅读(329)  评论(0编辑  收藏  举报