![cc16bafa51f8ec5d825cbda3976be56d.png](https://i-blog.csdnimg.cn/blog_migrate/5977f4340a0508d05a9791dbb8a838f9.jpeg)
相关历史文章(阅读本文前,您可能需要先看下之前的系列 )
国内最全的Spring Boot系列之三
2020上半年发文汇总「值得收藏」
程序CPU占用率飙升,如何定位线程的堆栈信息?「超详细,值得收藏」看不懂还有配套视频 - 第319篇
「工作流Activiti」介绍-新手上路,注意安全 - 第320篇
「Activiti精品 悟纤出品」activiti介绍-十万个为什么 - 第321篇
「Activiti精品 悟纤出品」Activiti6 Getting Started- 稳扎稳打 - 第322篇
「Activiti精品 悟纤出品」Activiti7 Getting Started-摸石头过河 - 第323篇
「Activiti精品 悟纤出品」流程模型搭建-小试牛刀 - 第324篇
「Activiti精品 悟纤出品」基于mysql初始化「图图为啥消失了」- 第325篇
悟纤:师傅,时间复杂度咱们之前不是学习过了嘛,怎么又来一遍了,你这是不是这两天没有备课要偷懒呢。
![e1eb5f90bbf57b4c3940276c1117ac09.png](https://i-blog.csdnimg.cn/blog_migrate/ac667ad15a38476ce8ef2a41f1205dac.png)
师傅:师傅不是要偷懒,我就问你这个变形的三层for循环这个执行的次数是多少,你能算出来嘛?
![a611a42d5c5fc808c20c3925a96e4d22.png](https://i-blog.csdnimg.cn/blog_migrate/aa0305383167ae7a05bfb8e1660d59c1.jpeg)
悟纤:师傅,你这是没事找事做吧。
师傅:这不粉丝留言“在for循环里面第一层是i<=n,第二层是j<=j,第三层是k<=j“。
悟纤:粉丝的问题吗,那是要好好对待,不可马虎呐。
![2573ff2e48966c2740c74cd9257a487a.png](https://i-blog.csdnimg.cn/blog_migrate/47d84c10d8151371feb479b0ebed0f69.jpeg)
师傅:话说你不是经常能说会道的,你会嘛?
悟纤:弟子才疏学浅,不敢在师傅目前班门弄斧,还是师傅您来。
师傅:哎,不懂不可怕,可怕的是不懂装懂呐。
悟纤:弟子受教了,请师傅赐教。
![30f131d203a6cc84af05e5236908de68.png](https://i-blog.csdnimg.cn/blog_migrate/c0a5931c4d6b511df3f0594f3ceabae1.jpeg)
师傅:那为师你好好给你讲解下。
![819c5ff4165957084c5e6f723fad1721.png](https://i-blog.csdnimg.cn/blog_migrate/825c72997a25ad9283dc491a43f8ff32.png)
前言
有一个网友在知乎留言:
https://zhuanlan.zhihu.com/p/87754009
![7ea086b2ea07812a09f83c875b539dd6.png](https://i-blog.csdnimg.cn/blog_migrate/e0d331400d580d54289ee3cdb3e20f35.png)
「关注SpringBoot公众号不迷路」
本文会采用进阶式的讲解方式,从一阶到三阶,在到3阶的变形。
对于时间复杂度是怎么回事,还不懂的话,请先阅读《烦不烦,别再问我时间复杂度了:这次不色,女孩子进来吧 - 第281篇》:
https://mp.weixin.qq.com/s/F1HLfWkYok4D633OpcLjwA
一、一阶的时间复杂度
一节的应该是非常的简单的,为了文章的完整性,我们还是简单的看下代码:
/**
一层for循环,n等于多少就循环多少次,那么可以得知时间频度:
T(n)=n
那么时间复杂就是:O(n)
二、二阶的时间复杂度
我们看下二阶的小栗子:
/**
双层for循环的执行的次数就是n*n次。那么时间复杂度就是O(n²)
三、三阶的时间复杂度(立方阶)
3.1最基本的立方阶
最简单的立方阶就是三层for循环了:
/**
这个正常的立方阶for循环的次数就是n*n*n,那么时间复杂度也就是O(n3)。
3.2变形立方阶
变形的立方阶就是在这个for循环的次数,内层for循环和外层for循环是有关系的,直接上代码看下:
/**
这里这里和前面的基本的例子不一样的地方就是在内层for循环的时候,j之前是j<=n,现在是和外层的i有关系是j<=i; 对于k的话之前是k<=n,现在是k<=j
这个乍一看还看不出来时间复杂度是多少,所以我们需要进行推导一下,怎么推导呐,具体的推导过程还不懂,那你得好好看看《烦不烦,别再问我时间复杂度了:这次不色,女孩子进来吧 - 第281篇》。
通过时间复杂度的一个推演过程,我们知道我们要先计算一下时间频度:T(n)
直接看帅气的纸质推演过程:
![b5c5660a3c27313667c95550c2c60ad2.png](https://i-blog.csdnimg.cn/blog_migrate/4a2215b38256adc53bd7f26be05e3624.jpeg)
![e13964fdbb2b84f9e8e528a30700c283.png](https://i-blog.csdnimg.cn/blog_migrate/bd2fe542c7bebb2a16ce76b758966b9e.jpeg)
这里上面的推演过程已经写得很清楚了,执行的次数:
n(n+1)(n+2) / 6
时间复杂度就是O(n3)
我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果。
à悟空学院: https:// t.cn/Rg3fKJD
学院中有 Spring Boot相关的课程!点击「 阅读原文」进行查看!
SpringBoot视频: http:// t.cn/A6ZagYTi
Spring Cloud视频: http:// t.cn/A6ZagxSR
SpringBoot Shiro视频: http:// t.cn/A6Zag7IV
SpringBoot交流平台: https:// t.cn/R3QDhU0
SpringData和JPA视频: http:// t.cn/A6Zad1OH
SpringSecurity5.0视频: http:// t.cn/A6ZadMBe
ShardingJDBC分库分表: http:// t.cn/A6ZarrqS
分布式事务解决方案: http:// t.cn/A6ZaBnIr
JVM内存模型调优实战: http:// t.cn/A6wWMVqG
Spring入门到精通: https:// t.cn/A6bFcDh4