我想找到这个算法复杂性的上下限
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
我的推理在两种情况下都是正确的吗? 有没有更容易找到欧米茄的方法? 谢谢您的时间:))
答案 0 :(得分:2)
我很确定你的代码的复杂性是静态的,所以上限和下限是相等的。
编辑:我知道排序算法的复杂性表示法。迭代次数取决于排序的完成方式,当然也取决于列表的初始顺序。排序算法通常是已排序列表中最快的。因此,存在最佳情况,其中所有内容都已排序,最差情况(某些混乱)取决于算法。有些算法会使用简单的反向列表,而有些算法则不然。这就是为什么没有完美的排序算法。您可以选择最适合您的情况。