算法分析之大O、大Ω、大Θ和小o表示法

算法分析中常常使用大O表示法、大Ω表示法、大Θ表示法和小o表示法来对算法复杂度进行分析。本文就来讨论它们的具体定义并给出一些例子。


在不同的参考书上大O表示法会出现不同的定义,但是本质上它们都是统一的。这里我们首先采用最为常见的一种定义方法,这种方法常常将大O表示法和小o表示法来成对儿地描述。


算法分析之大O、大Ω、大Θ和小o表示法_第1张图片算法分析之大O、大Ω、大Θ和小o表示法_第2张图片


算法分析之大O、大Ω、大Θ和小o表示法_第3张图片

大Ω表示法仍然是以大O表示为基础来定义的:如果 f(n) = O(g(n)) 那么就有 g(n) = Ω(f(n))。这也就意味着对于一个很大 n来说,函数 g 增长的速度不会比函数 f 慢。


大Θ表示法:如果 f(n) = O(g(n)),并且 g(n) = Ω(f(n)),那么则有 f(n) = Θ(g(n))。也就是说,对于一个很大 n来说,函数 f 增长的速度既不比g 来得快,也不比 g 来得慢。


最后,来看下面这个复合的示例:


算法分析之大O、大Ω、大Θ和小o表示法_第4张图片


参考文献与推荐阅读材料

【1】Michael Sipser,计算理论导论,机械工业出版社

【2】算法之美——隐匿在数据结构背后的原理(C++版),电子工业出版社

你可能感兴趣的:(数据结构与算法)