请简述下面两个for循环的优缺点

xiao_xiao_zi 2009-09-04 09:15:56
for(i = 0; i < N; i++)
{
if(condition)
DoSomething();
else
DoOtherthing();
}

///////////////////////////////////////////////////////////////////

if(condition)
{
for(i = 0; i < N; i++)
DoSomething();
}
else
{
for(i = 0; i < N; i++)
DoOtherthing();
}
...全文
243 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这道题就是高质量c/c++ 上的。
想想本来做循环很有规律的,他又来个判断使程序停在那,把连续性弄坏了。时间应该会长点。
jinzonghui 2009-09-06
  • 打赏
  • 举报
回复
支持6楼。呵呵。
qq446133969 2009-09-06
  • 打赏
  • 举报
回复
4-4(c)
for (i = 0; i < N; i++)
{
if (condition)
DoSomething();
else
DoOtherthing();
}




4-4(d)
if (Condition)
{
for (i = 0; i < N;i++)
{
DoSometing();
}
}
else
{
for (i = 0;i < N;i++)
{
DoOtherthing();
}
}
qq446133969 2009-09-06
  • 打赏
  • 举报
回复
如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。示例 4-4(c)的程序比示例 4-4(d)多执行了 N-1次逻辑判断。并且由于前者老要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。如果 N 非常大,最好采用示例 4-4(d)的写法,可以提高
效率。如果 N 非常小,两者效率差别并不明显,采用示例 4-4(c)的写法比较好,因为程序更加简洁.
fly_new 2009-09-06
  • 打赏
  • 举报
回复
两者不等价如何说优缺点、
jinglijun 2009-09-06
  • 打赏
  • 举报
回复
第一種結構更清晰,可讀性高
第二種可讀性差,但編譯器會優化的。
建議一般還是用第一種
時間複雜度也會小點!
ziqingwushuang 2009-09-06
  • 打赏
  • 举报
回复
高质量编程上有这个问题,路过学习
omegabomb 2009-09-05
  • 打赏
  • 举报
回复
实际情况可能会改变,第一种方案只有1个N值,而第二种有2个N值,假如2个N值会改变的话,就不同了。
xk2615@ 2009-09-05
  • 打赏
  • 举报
回复
路过,学习了
WayminS 2009-09-05
  • 打赏
  • 举报
回复
学习了,顶6楼
littlegang 2009-09-04
  • 打赏
  • 举报
回复
我个人觉得,就纯粹这个判断,效率的考虑实在是不需要的,因为就算N是int型的很大值
if分支 在一台P4机器上耗用的时间不会太大

最主要要考虑的是易读性,当然首先要考虑condition是否每次循环会可能变化
shield0771 2009-09-04
  • 打赏
  • 举报
回复
如果condition是全局变量会被DoSomething()或者DoOtherthing()改变,用第一种方法;
如果不会被改变,用第二种,循环内部做的事情还是越少越好(效率高)。
big_cucumber 2009-09-04
  • 打赏
  • 举报
回复
《高质量C++编程》 林锐 著
这本书后面有一部分试题,被N多公司抄去做笔试题。
本题就在这本书里。
versaariel2009 2009-09-04
  • 打赏
  • 举报
回复
去看高质量C/C++
james_hw 2009-09-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 supermegaboy 的回复:]
第一种可读性比第二种好,但不利于编译器优化,第二种则相反,可读性差点,但利于编译器优化。

视环境选择。
[/Quote]

呵呵,顶这个。找一下面试题,这类面试题很多,说明也很详细
飞天御剑流 2009-09-04
  • 打赏
  • 举报
回复
第一种可读性比第二种好,但不利于编译器优化,第二种则相反,可读性差点,但利于编译器优化。

视环境选择。
nkthinker 2009-09-04
  • 打赏
  • 举报
回复
第二种形式不用每次都做判断,效率应该高一些,但是好一点的编译器应该直接优化掉吧
superliubao 2009-09-04
  • 打赏
  • 举报
回复
同意6楼
wustzrx 2009-09-04
  • 打赏
  • 举报
回复
同意6楼的观点,如果condition无变化,则方法2效率要高,比较好

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧