数据的交换是编程中最常用的一种算法,比如排序算法就是利用交换算法实现数字排序,基本上对数据的处理都和数据的交换有着千丝万缕的联系,哪我们今天就来学学在C语言中有哪些交换算法
在写代码前,先看一下数据交换是如何实现的
如:a=10 b=100 变成 a=100 b=10的实现过程
交换前:
引进中间变量temp
temp = a
a = b
b = temp
程序代码:
#include <stdio.h> int main() { int a = 10; int b = 100; int temp;//引进中间变量 printf("交换前:a=%d b=%d\n",a,b); temp = a; a = b; b = temp; printf("交换后:a=%d b=%d\n",a,b); return 0; }
执行结果:
方法二:加减法
a = a + b
b = a - b
a = a - b
程序代码:
#include <stdio.h> int main() { int a = 10; int b = 100; printf("交换前:a=%d b=%d\n",a,b); a = a + b; b = a - b; a = a - b; printf("交换后:a=%d b=%d\n",a,b); return 0; }
执行结果:
方法三:乘除法
a = a * b
b = a / b
a = a / b
程序代码:
#include <stdio.h>
int main()
{
int a = 10;
int b = 100;
printf("交换前:a=%d b=%d\n",a,b);
a = a * b;
b = a / b;
a = a / b;
printf("交换后:a=%d b=%d\n",a,b);
return 0;
}
执行结果:
方法四:利用位运算符中的异或运算符
a = a ^ b
b = a ^ b
a = a ^ b
程序代码:
#include <stdio.h>
int main()
{
int a = 10;
int b = 100;
printf("交换前:a=%d b=%d\n",a,b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("交换后:a=%d b=%d\n",a,b);
return 0;
}
执行结果:
方法五:函数法
程序代码:
#include <stdio.h> void f(int *p,int *q) { int temp; temp = *p; *p = *q; *q = temp; } int main() { int a = 10; int b = 100; printf("交换前:a=%d b=%d\n",a,b); f(&a,&b); printf("交换后:a=%d b=%d\n",a,b); return 0; }
执行结果: