本文主要是介绍几种值交换的方法及利弊,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
几种值交换的方法:
说到值交换,当值交换被封装在一个函数里面的时候,大学教材上有一种较原始的方法,就是使用一个中间变量并且使用值引用来达到交换的目的。但在这里,可以get到另外的实现方法。
下面有三种:分别是中间变量-加减运算-异或运算
实现程序如下:
/*使用中间变量Temp*/
void swap1(int &a,int &b)
{int temp = a;a = b;b = temp;
}/*使用加减运算*/
void swap2(int &a, int &b)
{a = a + b;b = a - b;a = a - b;
}/*使用异或运算*/
void swap3(int &a, int &b)
{a ^= b;b ^= a;a ^= b;
}
第一种使用中间变量的方式是我们立即可以想到的,当被要求到不能使用中间变量的时候,后两种就派上用场了。
第二种使用简单的加减运算来实现交换目的,做运算的时候可能会面临数据溢出的情况,因为在32位平台下,int占4个字节,其范围是-2147483648---2147483648,故2147483648+1就变成了-2147483648,但在一定范围内可以采用。
第三种采用按位异或的方式来实现交换目的,将参与运算的两数各自对应的二进制位进行异或运算,相同为0,不同为1,运算三次即可达到目的,相比于第二种方式,此种方式更好。
这篇关于几种值交换的方法及利弊的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!