对一个算法的复杂度可以从时间和空间两个维度来评估,我们一般比较关心时间复杂度,它的定义如下:
大O符号表示法,即 T(n) = O(f(n)),其中 n 表示数据规模 ,O(f(n))表示运行算法所需要执行的指令数,和f(n)成正比。
上面公式中用到的 Landau符号是由德国数论学家保罗·巴赫曼(Paul Bachmann)在其1892年的著作《解析数论》首先引入,由另一位德国数论学家艾德蒙·朗道(Edmund Landau)推广。Landau符号的作用在于用简单的函数来描述复杂函数行为,给出一个上或下(确)界。在计算算法复杂度时一般只用到大O符号,Landau符号体系中的小o符号、Θ符号等等比较不常用。这里的O,最初是用大写希腊字母,但现在都用大写英语字母O;小o符号也是用小写英语字母o,Θ符号则维持大写希腊字母Θ。
有一篇以动画的形式解释算法时间复杂度的文章,个人感觉非常不错,可以参考下:https://www.jianshu.com/p/5f0d360d4752
网友评论