嵌套循环
嵌套循环的引入是为了解决多层循环的问题,比如:打印13行14列的数字13;
![d320e77ea8b024068138aa3b2a167fc1.png](https://i-blog.csdnimg.cn/blog_migrate/fb009ae3445306487497a08e09bad546.png)
打印结果为:
![8461c22459646bf60f15a8a75bb685d4.png](https://i-blog.csdnimg.cn/blog_migrate/96122c057a3c1eb1ca8d246f67f77088.jpeg)
在这块代码中,外层循环次数相当于行数,内层循环数相当于每行的列数,打印字符“13”的代码被执行了13 x 14 次;此时的循环次数不大,效果不是很明显,再看考虑如下的嵌套循环代码:
![fd173476bb37be868e0e7aac27a0820f.png](https://i-blog.csdnimg.cn/blog_migrate/77d07cc95dc92ff559197ed9498c4840.png)
上述代码在执行过程中相关变量的实例化、初始化、比较、自增的次数如下:
![64be45cf763b4cc39ff62497a0e41d2e.png](https://i-blog.csdnimg.cn/blog_migrate/124104459e78de7883fd1384652eb9d7.png)
嵌套循环优化
对于系统性能来说,无疑不是一个巨大的影响。那么,现在我们可以对其进行优化:
![c177fa466e8a4f40cababcb887acdac6.png](https://i-blog.csdnimg.cn/blog_migrate/1fefe9c79a0f9ac5988a651c2bfe6ee5.png)
第一次优化后,相关变量的实例化、初始化、比较、自增的次数都有了一些改变,是这样的:
![7553078ffeb9140def8a0550765a7add.png](https://i-blog.csdnimg.cn/blog_migrate/5390374a6844bfcd58110c7a075475d0.png)
相比较于优化前,效果好了很多,尤其是变量i,j效果是看得见的,但是呢,还有优化的空间,可以把变量i,j,k的初始化统一放到循环外部执行:
![3c876f36e99b145827821af9797de2ad.png](https://i-blog.csdnimg.cn/blog_migrate/6117800bab911548f0fed7c6585e701a.png)
那么,第二次优化后的相关变量的实例化、初始化、比较、自增的次数又有了些改变,会是这样的:
![e5d84e9e574b6aacb893e5e491f080d2.png](https://i-blog.csdnimg.cn/blog_migrate/713eea726b01b4d0c82009b36af04496.png)
此时再来对比原始数据,从数据上就能明显看出差别。再看执行结果,代码性能有了明显的提升,如果觉得效果不明显,还可以加大循环次数多次测试验证。
嵌套循环建议
对嵌套循环的一些使用建议:
- 使用循环嵌套时,内层循环和外层循环的循环控制变量不能相同。
- 循环嵌套结构的书写,采用右缩进格式,以便于清楚的体现循环层次的关系,提高代码的可读性和层级关系;
- 循环层级不能超过3级,我刚开始学编程的时候,老师曾说过这样的话:如果你的循环嵌套超过3级,那就是你的代码逻辑出问题了;层级太多意味着更复杂的逻辑,层级太深,不仅代码可读性差,也不利于后期维护。
- 不要再循环中修改数据结构,比如列表数据的增删改。
完结。老夫虽不正经,但老夫一身的才华