嵌套循环
嵌套循环的引入是为了解决多层循环的问题,比如:打印13行14列的数字13;
![b780893438d4dbd426145bc3272efc9b.png](https://i-blog.csdnimg.cn/blog_migrate/ed368f59ec0c659612b9c92e0b6bd879.jpeg)
13 x 14
打印结果为:
![f2d6a36b6c4391ed8b07c375cc3f3d78.png](https://i-blog.csdnimg.cn/blog_migrate/c59bfa467ef2979f9ecc6534c436a0b8.jpeg)
13 x 14 result
在这块代码中,外层循环次数相当于行数,内层循环数相当于每行的列数,打印字符“13”的代码被执行了13 x 14 次;此时的循环次数不大,效果不是很明显,再看考虑如下的嵌套循环代码:
![fb63827e23c66793dffbebcd9f0e4d98.png](https://i-blog.csdnimg.cn/blog_migrate/7780487389acabfb77a2e60c60c7c90d.jpeg)
嵌套循环
上述代码在执行过程中相关变量的实例化、初始化、比较、自增的次数如下:
![fc5b6132d112f3e71bc5bb56b34c8a7a.png](https://i-blog.csdnimg.cn/blog_migrate/f8828d056568323ee9ebf99e385603b9.jpeg)
嵌套循环分析
嵌套循环优化
对于系统性能来说,无疑不是一个巨大的影响。那么,现在我们可以对其进行优化:
![8bba174d6c8c6e6b719b6cebb082b1c6.png](https://i-blog.csdnimg.cn/blog_migrate/9d7a72fbd5f598da7f406cdc68634b7a.jpeg)
第一次优化
优化后,相关变量的实例化、初始化、比较、自增的次数是这样的:
![449795df977b1865c86249b816fe100c.png](https://i-blog.csdnimg.cn/blog_migrate/68b98b62ee36d86eca336ff78f44d48b.jpeg)
第一次优化的结果
相比较于优化前,效果好了很多,尤其是变量i,j效果是看得见的,但是呢,还有优化的空间,可以把变量i,j,k的初始化统一放到循环外部执行:
![41338072f554f982b91a76ac45316df1.png](https://i-blog.csdnimg.cn/blog_migrate/c0a3fb7115ccd040be41481b25c50482.jpeg)
第二次优化
那么,相关变量的实例化、初始化、比较、自增的次数会是这样的:
![28f82d96e8b08be8512254cb27456ff8.png](https://i-blog.csdnimg.cn/blog_migrate/3877af94e54e0ae14d143977b7621e66.jpeg)
第二次优化的结果
此时再来对比原始数据,从数据上就能明显看出差别。再看执行结果,代码性能有了明显的提升:
如果觉得效果不明显,还可以加大循环次数多次测试验证。
嵌套循环建议
对嵌套循环的一些使用建议:
- 使用循环嵌套时,内层循环和外层循环的循环控制变量不能相同。
- 循环嵌套结构的书写,采用右缩进格式,以便于清楚的体现循环层次的关系,提高代码的可读性和层级关系;
- 循环层级不能超过3级,我刚开始学编程的时候,老师曾说过这样的话:如果你的循环嵌套超过3级,那就是你的代码逻辑出问题了;层级太多意味着更复杂的逻辑,层级太深,不仅代码可读性差,也不利于后期维护。
- 不要再循环中修改数据结构,比如列表数据的增删改。