日期:2014-05-16  浏览次数:20338 次

(散分)一个循环用法的问题,那一个会更好呢
循环1:
  for (i=0;i<n;i++)
  {
   if(condition)
    DoSomething();
   else
    DoOtherthing();
  }
  循环2:
  if(condition)
  {
   for (i=0;i<n;i++)
    DoSomething()
  }
  else
  {
   for (i=0;i<n;i++)
    DoOtherthing();
  }
  问题1:循环1的优点和缺点。
  问题2:循环2的优点和缺点。..

------解决方案--------------------
如果condition是一个固定的条件,两者的效果是一样的,没有任何区别,所循环的次数都是n,但是我们普遍的想法是当if的条件condition与i无关,则将条件放在循环的外面,否则放在里面。
------解决方案--------------------
个人认为2比较好
1走了n遍循环,n遍判断
2走了n遍循环,1遍判断
2的效率比较高一点点
------解决方案--------------------
后者只作了一次判断,前者作了N次判断
所以后者的效率要好一点(节省了n-1次判断)
------解决方案--------------------
如楼上各位所说,后者节省了n-1次判断 效率更好点
------解决方案--------------------
2好
------解决方案--------------------
2nd
------解决方案--------------------
经典的先循环,还是先判断的问题。

------解决方案--------------------
2 hao!

------解决方案--------------------
1是写法上比较简洁一些 
2效率会高一些吧
------解决方案--------------------
支持2
------解决方案--------------------
两个用法有区别啊,不好比较。
------解决方案--------------------
循环的效率取决取决于你实际的应用。

------解决方案--------------------
當然優缺點要看你程序中的需要。

這樣舉個例子理解一下吧:現在有10個地方你可以去做不同的事情,第一種方法是你一個一個地方去,然后做你該做的不同的事情;第二種方法是你把事情分好類該區什么地方做,然后去做。僅僅考慮到事情的步驟的話,應該差不多!!你說哪個好就哪個好嘍~~
------解决方案--------------------
郁闷看了 半天 不都一样吗?

真奇怪 


------解决方案--------------------
个人认为F2的优点比较大。 
f1是先循环,后作判断。判断时,循环被打断。所以效率会较f2要低。
f2是先判断,后循环。。效率比f1高。
------解决方案--------------------
pt1314917 背着灵魂漫步 

个人认为F2的优点比较大。
f1是先循环,后作判断。判断时,循环被打断。所以效率会较f2要低。 
f2是先判断,后循环。。效率比f1高。 
==============================
 循环被打断 虾米意思啊?
 
------解决方案--------------------
如果樓主想觀察這兩者效率如何,可以造一些數據來比較其性能,實踐是檢驗真理的最好方法.
試試吧.
------解决方案--------------------
自己权衡吧...

汇编效率是非常高滴, 非常难写...
反正为了方便通常牺牲一点效率, 从而提交易用性
------解决方案--------------------
2 的话先判断后循环.虽然表面上是2繁冗.其实2的效率高.并且从其他方面考虑2的功能更好些...
如果DOSOMETHING会改变这个CONDITION的话...

所以还是要看情况的..不过2就比1少了N-1 次判断.但是比1多了遍循环.在实际中没什么速度上的区别...论简洁的话当然是1了,可是2更适合实用.
 
所以觉得2会好一点
------解决方案--------------------
支持楼上的说法!
------解决方案--------------------
路过,2