浅谈for循环嵌套的效率

本文探讨了在编程中遇到的for循环嵌套效率问题。通过数学分析和概率计算,发现当外层循环次数远大于内层循环时,小循环在外的效率通常更高。然而,具体项目中还需考虑数据结构等因素,效率比较并非绝对。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天做项目时遇到一个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=k*n,则上式变为:



我们假设n=10,则可以得到函数图像为



横坐标为k,蓝色为p1概率,黄色为p2概率,从图中可以看出,

当k=1时,即m=n时,两着效率一样;

当k>1时,即m>n时,大循环套小循环的运算次数比较多,

当k趋向正无穷时,大循环嵌套小循环和小循环嵌套大循环运算次数的比例为(n+1)/(n-1)

因此,我们可以得出结论,一般情况下,小循环放在大循环外面的效率比较高.


当然,这也不是绝对的,具体项目中,因为数据存储结构或者其他原因,也有可能导致大循环放在外面效率比较高.


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值