寻找复杂性的上下限

时间:2018-05-02 15:00:16

标签: algorithm complexity-theory pseudocode lower-bound upperbound

我想找到这个算法复杂性的上下限

1: for all i=1 to n*n do
2:   for all j=i to 2*i do
3:     output “hello world”
4:   end for
5: end for

将其写为求和并将其简化为

f(n) = 0.5*n^4 + 1.5*n^2

似乎复杂性的上限是O(n ^ 4),因为0.5 * n ^ 4是最重要的元素。

对于复杂性的下限,我使用了公式

f(n) = Ω(g(n)) if f(n) >= c * g(n), where c > 0

并且似乎下限是Ω(n ^ 3)0 <0。 c&lt; 1

我的推理在两种情况下都是正确的吗? 有没有更容易找到欧米茄的方法? 谢谢您的时间:))

1 个答案:

答案 0 :(得分:2)

我很确定你的代码的复杂性是静态的,所以上限和下限是相等的。

编辑:我知道排序算法的复杂性表示法。迭代次数取决于排序的完成方式,当然也取决于列表的初始顺序。排序算法通常是已排序列表中最快的。因此,存在最佳情况,其中所有内容都已排序,最差情况(某些混乱)取决于算法。有些算法会使用简单的反向列表,而有些算法则不然。这就是为什么没有完美的排序算法。您可以选择最适合您的情况。