C语言效率问题-两个整型数的交换
C语言效率问题-两个整型数的交换我想问两个个有关两种写法或算法的运行效率问题,就是哪个运行结束的最快,哪个运行结束的最慢.首先是第一个:交换两个整型数的值,a和b 第一种方法是:int c = 0;c = a;a = b;b = c;第二种方法是:a = a + b;b = a - b;a = a - b;第三种方法是:a=a+b-(b=a);三种方法都能实现整数a和b的交换,请问哪个方法运行结束时间最短,那种方法运行结束时间最长,并请附上原因.
最佳回答
说到交换效率,就必须涉及到硬件。在32位机器中,数据寄存器(AX,BC,CX,DX,EX等)都是32位的,在这类机器中,int类型的数据也是32位的,这就是int类型操作最为简洁方便的原因。加法的操作是,取数到寄存器(两次,一次是被加数,另一次是加数),实施加法运算,并将结果存储到指定地址单元,减法操作于此类似。赋值操作是,取数,存数。通常,取存数操作的时间消耗高于寄存器操作,故假定,寄存器加、减操作的时间消耗为1,存储器取存操作的时间消耗为2,依次累计以上三种交换操作来比较优劣,注意这里用的是int类型数据的操作,浮点型数据操作校友区别。方法1:int c = a; a = b; b = c;2 + 2 + 2 = 8方法2:a = a + b; b = a - b; a = a - b;3 × (2 + 2 + 1) = 15方法3:a = a + b - (b = a); // 貌似不能完成交换操作?2 + 2 + 2 + 2 + 1 + 1 = 10由此可见,方法1最为高效。 再问: 我们老师教过:尽量减少变量的定义来增加效率,定义了一个参数,是不是会降低效率? 再答: 多定义变量,会增加存储器单元消耗,与效率关系不大。
最新回答共有2条回答
-
2026-03-29 17:26:40光亮的银耳汤
回复说到交换效率,就必须涉及到硬件。在32位机器中,数据寄存器(AX,BC,CX,DX,EX等)都是32位的,在这类机器中,int类型的数据也是32位的,这就是int类型操作最为简洁方便的原因。加法的操作是,取数到寄存器(两次,一次是被加数,另一次是加数),实施加法运算,并将结果存储到指定地址单元,减法操作于此类似。赋值操作是,取数,存数。通常,取存数操作的时间消耗高于寄存器操作,故假定,寄存器加、减操作的时间消耗为1,存储器取存操作的时间消耗为2,依次累计以上三种交换操作来比较优劣,注意这里用的是int类型数据的操作,浮点型数据操作校友区别。方法1:int c = a; a = b; b = c;2 + 2 + 2 = 8方法2:a = a + b; b = a - b; a = a - b;3 × (2 + 2 + 1) = 15方法3:a = a + b - (b = a); // 貌似不能完成交换操作?2 + 2 + 2 + 2 + 1 + 1 = 10由此可见,方法1最为高效。 再问: 我们老师教过:尽量减少变量的定义来增加效率,定义了一个参数,是不是会降低效率? 再答: 多定义变量,会增加存储器单元消耗,与效率关系不大。
热门文章
- 康达学院专转本五年制
- 高考一个考场分ab卷吗
- not only but also用法
- 某物体做自由落体运动,从释放开始计时,则物体在前2s内的平均速度为______m/s,物体下落2m时的速度大小为______m/s.
- 三角函数公式大全表格
- 地理中考必背知识点2022
- 2013-2014学年小学六年级科学上学期期末考试试卷及答案
- 人教版2014-2015学年小学五年级英语第二学期期中教学质量检测试卷及答案
- 【Linux驱动开发】设备树详解(二)设备树语法详解
- 别跟客户扯细节
- 在别的城市买房子能落户吗
- 卖房前要把装修贷还完吗
- 高中政治教学提高教学效果的方法探究
- “互联网+”背景下的初中英语课堂教学改革与创新策略研究
- 2022年终止合同范本
- 租房合同范本范文
- 如何挑选土豆
- 如何挑选土鸡
