详解交换两个数的值
来源:互联网 发布:机顶盒硬件检测软件 编辑:程序博客网 时间:2024/05/16 14:06
交换两个数值:简单来说就是将内存a中的值变成内存b中的值,将内存b中的值变成内存a中的值,而要想达到这种效果需要的就是交换他们彼此的地址(传地址),如下图所示
(1)第一种也是效率最高的一种做法就是引入第三变量,具体的算法和代码实现如下:
int main(){int tmp=0;int a=4;int b=5;tmp=a;a=b;b=tmp;printf("a=%d\tb=%d\n",a,b);}除了引入第三变量之外还可以用两个变量来实现,使用加法和乘法进行运算,但是在用加法和乘法时可能会发生越界的情况,同时有0时也不能使用乘法,在具体的题目中要具体的分析各种方法,再此只给出相应的实现方式。
(2)用与式形式交换,具体的算法实现和代码实现如下所示:
#include<stdio.h>int main(){int a=4;int b=5;a=a^b;b=a^b;a=a^b;printf("a=%d\tb=%d\n",a,b);}(3)用指针的形式来实现,再此可以封装一个函数来实现,也可以直接在主函数中实现这种简单的功能,具体的代码如下:
#include<stdio.h>int main(){int a=4;int b=5;int *p;int *q;p=&a;q=&b;//第一种实现*p=*p^*q;*q=*p^*q;*p=*p^*q;//第二种实现*p=*p*(*q);*q=*p/(*q);*p=*p/(*q);//第三中实现*p=*p+*q;*q=*p-*q;*p=*p-*q;printf("a=%d\tb=%d\n",a,b);}
0 0
- 详解交换两个数的值
- 详解交换两个数的值
- 交换两个数的值
- 交换两个数的值
- 交换两个数的值
- 交换两个数的值
- 交换两个数的值
- 交换两个数的值
- 交换两个数的值
- 交换两个数的值
- 交换两个数的值
- 交换两个数的值
- 两个数的交换
- 两个数的交换
- 两个数的交换
- 两个数的交换
- 两个数交换值
- Java快速交换两个数的值
- HDU 1548 A strange lift
- 在 Laravel 中使用 Laravel Searchy 扩展包实现基于数据库的轻量级搜索功能
- 百度地图API 地理位置获取和大头针显示当前位置
- 01 类目Category、延展Extension、协议Protocol、计数器的使用NSTimer
- dalvik VM的解释器分析
- 详解交换两个数的值
- javac不是内部或外部命令
- Markdown用例
- Mysql中where 1=1 和count(0) 使用小技巧
- Leetcode Triangle
- Codeforces Round #363 (Div. 2)[A]Launch of Collider
- Leetcode Rectangle Area
- 在Unity中使用ProtoBuffer进行数值表转换以及生成网络通信用的协议
- Leetcode Gas Station