day_6/30(根据实际情况优化代码)

        最近学到循环,循环就要计算机做很多的运算,虽然现在做的一些例题运算量都不大,代码优不优化对运行出结果影响不大,但是呢,一旦计算量变大,优不优化还是没有区别吗?有区别的,在我们的实际应用中一个小小的改变就可能减少非常多的运行时间,代码优化是十分必要的。

下面讲几个例子来说明一下证实一下:

        1、for循环输出1-10000之间能被5整除的数,并每行输出三十个值。

 常规思想,从1开始,到10000结束,逐个判断是否能被5整除:      

 常规思想运行时间30毫秒     

 下面来开优化后的代码

优化后的代码运行时间7毫秒   

         运行时间相差几倍,这个问题就是根据实际情况优化代码,1~10000当中能被5整除的最小的数不就是5吗,一个能被五整除的数加上5之后不也能被5整除吗,所以这里根据实际情况把i初始化为5,步进也为5,循环次数为原来的五分之一,并且还减少了一个if判断和条件里面的i对5取余的运算,极大的减少了程序的运行时间。

        2、求 1!+2!+3!+4!+~~~+999!,输出结果。

 常规思想,循环生成1~999这些数字,里面一个循环计算当前这个数的阶乘,最后加到sum里面。运行时间为

 再看优化后的代码

优化后的代码运行时间 

         一样的结果,运行时间却相差了十倍,对于这个问题,我是这样优化的,2的阶乘是不是等于1的阶乘乘以2,3的阶乘是不是等于2的阶乘乘以3,我发现,在计算2的阶乘的时候,temp里面不就是放的1的阶乘吗,计算3的阶乘的时候temp又变成了2的阶乘,所以每次循环就不需要再从头开始计算当前这个数的阶乘了,只需要用当前这个数乘以前面那个数的阶乘就可以了,之后加到sum里面,循环结束后输出结果,完事。

        计算机的算力是有限的,它在单位时间内只能做有限量的计算,所以我们要想程序运行的快,效率更加的高效,就需要根据实际情况在达到相同的结果时尽量减少计算机的运算量,从而减少程序的运行时间,让我们编写的程序更加高效,所以说代码优化在我们编程的过程中是十分有必要的。

总结几点:

        1、减少不必要的运算。在使用循环的时候,能找到规律的情况下,初始化变量要根据实际情况赋值,步进也按照实际情况变更,不要一成不变的按照习惯i=1啊、i++啊什么的。

        2、减少重复计算。在一个式子或者多个世子多次重复运算的时候,可以用一个变量把这个式子的结果存储起来,后面直接运算使用即可。

         3、尽量减少嵌套循环的使用。一个循环的时间复杂度是n,而嵌套循环的时间复杂度是n^{2},两种方式的时间复杂度根本不是一个量级的。

 这是只是我通过近几天的学习的出来的结论,如有错误请评论区留言斧正,感谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值