今天做项目时遇到一个for循环的嵌套问题,一个循环次数多,一个次数少,怎样设计效率较高.
想起以前笔试时遇到过这个问题,当时由于时间仓促,没有细想,今天在实际代码中遇到这么问题,于是动笔算了下.
设两个循环次数分别为m、n,m为一个很大的数,n为一个较小的数。假设在m循环中第i(0<i<=m)个,n循环中第j(0<j<=n)个退出
则大循环套小循环所需的运算次数y1=(i-1)*n+j;
小循环套大循环所需的运算次数y2=(j-1)*m+i;
令f(i,j)=y1-y2=(n-1)*i+(1-m)*j+m-n
当f(i,j)>0时,
由此我们可以得到函数图像
通过计算相应面积所占的比例,我们可以算出相应的概率:
p1为大循环套小循环运算次数比较多的概率
p2为小循环套大循环运算次数比较多的概率
令m