大'O' - 功能的时间复杂性

时间:2017-03-18 20:33:04

标签: python function time-complexity big-o

试图找出函数的时间复杂度。

功能是:

def test(self, alt):

    same = Sample()
    for i in self.items:
        if alt.func1(i):
            same.func2(i)

    return same

func1具有O(s)的复杂度,其中s是self的大小。

func2的复杂度为O(1)。

如果func1是O(1),那么我知道它将是

O(1 + n * n)= O(1 + n ^ 2)= O(n ^ 2)

但我需要在func1为O(s)

的情况下解决这个问题

编辑:

我的错误,我没有补充说:

Sample()是O(1)

1 个答案:

答案 0 :(得分:0)

由于您在func1循环中的每次迭代时调用for,因此复杂性将取决于self.itemsfunc1的长度并创建{{1}实例。

因此,如果same的长度为self.items且创建n的复杂度为same,则总复杂度将根据以下公式计算:

x

上述等式的复杂性取决于X,即如果X大于x + ns 则表示ns,否则它是O(x)。一般来说,你可以写下来如下:

O(ns)

另请注意,如果O(max{x, ns}) 为O(1),则复杂性与您声称的不同。它将是func1