qq音速运行环境异常:简述以下两个for循环的优缺点

来源:百度文库 编辑:高考问答 时间:2024/05/05 22:54:29
请帮忙具体写出,我也知道些优缺点,就是写不出来。。-_-,谢谢各位了

// 第一个
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();
}
优点:
缺点:
谢谢bushing和幸巴达的热情答复,可是如果让你们去分别写出优点缺点,应该具体的如何写呢?第一种的优点是什么呢,第2种的缺点又是什么呢?的再次感谢^0^

这两个语句块不是很一样
假设可以通用的话,从时间复杂度上来说,第二个更优一些。
时间复杂度关键是看循环的多少。第二个是先做一个判断在做循环。比第一个的速度快很多。入if的两种可能的概率相等的话。第二个的时间比第一个少一半。

第一个是做n次判断,
条件满足a次调用a次DoSomething();
条件满足b次调用b次DoOtherthing();

第二个是做1次判断,
满足条件就调用n次DoSomething();
否则n次DoOtherthing();

条件 和循环的先后顺序不同
第一个先循环之后 完成与循环有关的条件操作
比如说 找一个数组中奇数偶数的个数 最大值 最小值 就可以用这个方法来完成
优点:对数组操作很方便,建议关于数组的问题都用这个来完成
缺点:没有什么吧,觉得挺好的。硬要说的话 简单 使用率高
第二个就是符合了条件完成一个循环 不符合条件完成另一个循环 循环体和条件的关系不是很大
具体例子暂时没有想出来 用得不多吧
优点:我觉得没有
缺点:没有什么用处

个人觉的这两个好像并不是一样的效果啊,对于(1)来说,在这N次循环中,可能做DoSomething(),也可能做DoOtherthing();而对于(2)来说,要么就做N次DoSomething(),要么就做N次DoOtherthig()。
例如:for(i=0;i<10;i++)
{
if(i<5)
Dosomething();
else
Dootherthing();
} //设i的初值为3
但如果假设两个实现同一个算法,则我觉的“幸巴达”说的很有道理。