循环 结构中的一些问题
C++/C循环语句中,for循环语句的使用频率最高,其次是while循环语句,最后是do语句,事实上笔者最喜欢的还是将for语句用于有限次循环语句,while用于无限循环或者条件(中断)循环,do语句几乎不用。但是此时此刻谁用的多谁用的少已经无关紧要了,我们更关心的是循环体的效率问题,提高循环体的效率的最基本办法就是降低循环体的复杂性。
在实际多层循环应用种,如果可能,应将最长的循环放在最内层,最短的循环放在最外层,这样可以减少CPU扩月循环层的次数。具体如下:
//以下代码效率高,长循环再内层
Unsigned char I;
Unsigned char j;
Unsigned char k;
For( i=0; i<10; i++)
{
For( j=0; j<100; j++)
{
K=16*i+j;
}
}
//以下代码效率低,长循环再外层
Unsigned char I;
Unsigned char j;
Unsigned char k;
For( i=0; i<100; i++)
{
For( j=0; j<10; j++)
{
K=4*i+j;
}
}
如果循环体内存在逻辑判断,并且循环的次数较大,此时最好将逻辑判断移到循环体外部。当然对于循环次数较少的情况下可以牺牲一点效率问题换取代码的简洁性:
For ( i=0; i<N;i++)
{
If(condition)
Do_Something();
Else
Do_Otherthing();
}
If(condition)
{
For ( i=0; i<N;i++)
DoSomething();
}
Else
{
For ( i=0; i<N;i++)
DoOtherthing();
}