算法之时间复杂度

159 阅读2分钟

时间复杂度

由于受运行环境和输入环境的影响,代码的绝对执行时间是无法预估的,但是我们却可以预估代码对的基本操作执行次数。

基本操作执行次数

小飞上班一共有4种交通工具,每一种花费的时间都是不一样的,我们一起来看看

场景一

从家到公司路程10km,骑哈罗电单车,每3分钟骑1km,那么骑到公司多长时间?

image-20210331070005090

答: 3x10 = 30 分钟

那如果路程是 n km 呢? 那从家骑到公司就是 3 * n = 3n 分钟

如果用一个函数来表达骑车时长,可以记作 T(n)=3nT(n) = 3n ,n 为路程的长度。

image-20210403165233346

场景二

从家到公司路程 1600m,2路公交(步行),每5分钟步行剩余路程的一半,即第5分钟步行 800m ,第10分钟步行 400m,第15分钟步行 200m,... 那么小飞走到离公司还有 100m,需要多久呢?

image-20210331072542698

答:数字16不断除以2,那么除几次以后的记过等于1? 这里就涉及到数学中的对数,即以2为底16的对数 log216log_2 16

因此,走到离公司还剩100m,需要5* log16log16=20分钟

如何理解「对数」?

www.zhihu.com/question/26…

对数源于指数,是指数函数反函数

因为:y=axy = a^x

所以:x=logayx = log_a y

image-20210403165245220

场景3

小飞坐公交车到公司30分钟,每5分钟看一眼美女。那么小飞坐公交车到公司需要多长时间?

image-20210403164302381

答:自然是30分钟,因为骑车和看美女是没有关系的。无论看多少眼美女,公交车到公司的时间仍然是30分钟,记作 T(n)=30T(n) =30

image-20210403165257665

场景4

小飞从家到公司10km,每骑1km需要1分钟的时间,骑行第二个1km需要2分钟时间,骑行第三个1km需要3分钟时间...... 每多骑1分钟,所花的时间也多一分钟,那么小飞骑到公司,需要多长时间?

答案是从1累加到10的总和,也就是55分钟。

如果从家到公司是N公里呢?

那么就是 1+2+3+...+n1+n=(1+n)n/2=0.5n2+0.5n1+2+3+...+n-1+n= (1+n)*n/2 = 0.5n^2 + 0.5n

记作 T(n)=0.5n2+0.5nT(n) = 0.5n^2 + 0.5n

image-20210403165312081

参考

《漫画算法》