您的位置:首页 > 其它

关于数值交换的几种方法

2016-10-19 10:55 204 查看
在大量的开发中常常会遇到需要交换两个数值的问题,今天就给大家分享一些数值交换方面的方法:

第一种方法:

这也是大家最容易想到的方法,即利用中间变量达到交换两个数的目的,具体如下:

     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 <stdio.h>

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;

}

执行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: