Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 大';O';-函数的时间复杂度_Python_Function_Time Complexity_Big O - Fatal编程技术网

Python 大';O';-函数的时间复杂度

Python 大';O';-函数的时间复杂度,python,function,time-complexity,big-o,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) 但是我需要用f

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

功能是:

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)

因为在
for
循环的每次迭代中调用
func1
,复杂性将取决于
self.items
func1
的长度,以及创建
相同的
实例

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

x + ns
上述方程的复杂度取决于X,也就是说,如果X大于
ns
,它将是
O(X)
,否则它是
O(ns)
。一般来说,你可以这样写:

O(max{x, ns})

还要注意的是,如果
func1
是O(1),那么复杂性就不会像您所说的那样。它将是
O(max{x,n})

由于您在
for
循环的每次迭代中调用
func1
,因此复杂性将取决于
self.items
func1
的长度以及创建相同的
实例

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

x + ns
上述方程的复杂度取决于X,也就是说,如果X大于
ns
,它将是
O(X)
,否则它是
O(ns)
。一般来说,你可以这样写:

O(max{x, ns})

还要注意的是,如果
func1
是O(1),那么复杂性就不会像您所说的那样。它将是
O(max{x,n})

“如果func1是O(1),那么我知道它将是O(1+n*n)=O(1+n^2)=O(n^2)”,你是怎么知道的?你的问题中的n是什么?我猜我对这种复杂性是错的,我认为我的理解是正确的,但显然不是。很抱歉那又是什么呢?不确定我会错在哪里“如果func1是O(1),那么我知道它会是O(1+n*n)=O(1+n^2)=O(n^2)”,你是怎么知道的?你的问题中的n是什么?我猜我对这种复杂性是错的,我认为我的理解是正确的,但显然不是。很抱歉那又是什么呢?我不知道我会错在哪里,这是否意味着大O复杂性是线性时间(O(n)),因为n是影响最大的重要部分?如果我误解了,请道歉。除非你知道
x
,否则你不能这么说。如果
ns
大于
x
并且
s
不是
n
的一个因子,那么整个复杂性将是
O(n)
。好的,我想我犯了一个错误。我知道创建与
Sample()
的实例相同的
是一个常量时间(O(1))。那么这会是O(n)吗?@user7262738不,是
O(n)
。如果
s
不是
n
的一个因子,那么它将是
O(n)
。是的,它将是O(n)@Kasramvd您应该删除最后一行中的“s”。那么这是否意味着最大的O复杂性是线性时间(O(n)),因为n是影响最大的重要部分?如果我误解了,请道歉。除非你知道
x
,否则你不能这么说。如果
ns
大于
x
并且
s
不是
n
的一个因子,那么整个复杂性将是
O(n)
。好的,我想我犯了一个错误。我知道创建与
Sample()
的实例相同的
是一个常量时间(O(1))。那么这会是O(n)吗?@user7262738不,是
O(n)
。如果
s
不是
n
的一个因子,那么它将是
O(n)
。是的,它将是O(n)@Kasramvd您应该删除最后一行中的“s”。