什么是大O符号?它有什么用途?
何谓Ω符号和Θ符号?它们与大O符号有何不同?
给出以下函数的大O符号:f(n)=2n^2+3n+1。
给出以下函数的Ω符号:f(n)=log(n)+5。
如果算法A的时间复杂度为O(n),而算法B的时间复杂度为O(n^2),那么在什么情况下A的效率高于B?
Asymptotic Notations 是一个衡量算法运行时间复杂度的工具,其关注算法运行时间随着输入大小增长的趋势。以下是三种通常使用的 Asymptotic Notations:
大O符号(Big O Notation)
Big O Notation 用于描述算法最坏情况下的时间复杂度。当输入数据增长时,算法的时间复杂度与某个常数 k 成正比,而且当输入数据数值增大时,此常数 k变得越来越不重要。
比如说:当n趋向无限大时,O(n) 就是一种线性时间复杂度算法。简单来说,因为一个有n个元素的列表,最多需要检查n次才能找到目标元素,所以时间复杂度是O(n)。
大Ω符号(Omega Notation)
Ω Notation 用于描述算法最优情况下的时间复杂度。当输入数据增长时,算法的时间复杂度与某个常数 k 成正比,且算法常数 k 的值是趋近最小的。
比如说:当n趋向无限大时,Ω(n lg n) 是快速排序的运行时间复杂度。简单来说,当列表经过排序后数据的查找时间变得更加快速,此类算法优于平均水平,所以时间复杂度是Ω(n lg n)。
大θ符号(Theta Notation)
θ Notation 用于描述算法的平均情况下的时间复杂度。当输入数据增长时,算法的时间复杂度和某个常数 k 成正比,且算法常数 k 的趋近平均值。因为平均时间复杂度并不总是最坏情况复杂度或最优情况复杂度的平均值,因此θ Notation 是一个更为精确的算法分析工具。
比如说:当n趋向无限大时,θ(n) 是一个简单查找算法的时间复杂度。简单查找需要检查列表中的每个元素,所以时间复杂度是 θ(n) 。例如输入一个列表并且查找元素。
总之,Asymptotic Notations 是一种帮助计算设计和改进算法的工具,尤其对那些必须处理大量复杂而大量的数据的算法来说,更是必要的。
答案:当n趋近于无限大时,此算法的执行时间会随着n log n的增加而增加。
答案:当n趋近于无限大时,此算法的执行时间会随着n^2的增加而急剧增加。
答案:当n趋近于无限大时,此算法的执行时间会急剧增加,甚至可能导致程序崩溃。
答案:此算法的最坏情况时间复杂度是O(n log n)。
答案:此算法的执行时间不会随着n的增加而增加,而是恒定的。