关于数值交换的几种方法
在大量的开发中常常会遇到需要交换两个数值的问题,今天就给大家分享一些数值交换方面的方法:
第一种方法:
这也是大家最容易想到的方法,即利用中间变量达到交换两个数的目的,具体如下:
int tmp;
tmp = i1;
i1 = i2;
i2 = tmp;
这种方法执行效率是最低了
第二种方法:
利用数学中的运算技巧:
i1 = i1 + i2;
i2 = i1 - i2;
i1 = i1 - i2;
这样也可以实现两个数的交换
第三种方法:
则是利用位运算中的异或来实现数据交换
i1 = i1 ^ i2;
i2 = i1 ^ i2;
i1 = i1 ^ i2;
这种方式的执行效率相对来说比较高。
源代码如下:
#include
void swap1(int i1,int i2)
{
int tmp;
tmp = i1;
i1 = i2;
i2 = tmp;
}
void swap2(int i1,int i2)
{
i1 = i1 + i2;
i2 = i1 - i2;
i1 = i1 - i2;
}
void swap3(int i1,int i2)
{
i1 = i1 ^ i2;
i2 = i1 ^ i2;
i1 = i1 ^ i2;
}
int main(void)
{
int i,j;
i = 3;
j = 5;
swap1(i,j);
printf("i = %d,j = %d\n",i,j);
i = 6;
j = 8;
swap1(i,j);
printf("i = %d,j = %d\n",i,j);
i = 2;
j = 7;
swap1(i,j);
printf("i = %d,j = %d\n",i,j);
return 0;
}