草庐IT

《数据结构和算法之美》学习笔记 Day 3

课程:《复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度》总结有时候,代码的时间复杂度在不同情况下会出现量级的差异。为了更全面、更准确的描述代码的时间复杂度,需要引入下面的概念。四个复杂度分析的概念最好情况时间复杂度(bestcasetimecomplexity)代码在最理想的情况下执行的时间复杂度。最坏情况时间复杂度(worstcasetimecomplexity)代码在最糟糕的情况下执行的时间复杂度。平均情况时间复杂度(averagecasetimecomplexity)代码在所有情况下的复杂度的加权平均值,即加权平均时间复杂度或期望时间复杂度均摊时间复杂度(amortizedtim

时间复杂度详解(均摊&平均情况复杂度&复杂度振荡)

使用不同算法,解决同一问题,效率可能相差很大比如求n个斐波拉契数(前n项的和)、斐波拉契数:一个数列从第3项开始,每一项都等于前两项之和fib数列:0、1、1、2、3、5、8、13、21、34……递归和普通循环求解publicclassfib{publicstaticintget1(intn){if(n递归通常是把一个大型复杂的问题转化为一个与原问题相似的规模较小的问题,需要多次重复的计算图解:前2项的和,0+1=1,需要进行一次加法运算前3项的和,0+1=1,1+1=2,需要进行两次加法运算……前n项的和,需要进行n-1次加法运算所用循环次数为n-1递归方法时间复杂度:1+2+4+8=20+