n元素阵列中未知元素的时间复杂度

时间:2015-06-01 22:19:39

标签: performance algorithm

我是时间复杂性和算法的新手。

假设一个方法传递给一个数组,我们只遍历该数组一次。我知道时间取决于数组的大小 - 让我们称之为“n”。但是,如果对于该阵列中的每个元素“el”,你会做“el”次?在这种情况下,时间复杂度是多少,因为你有另一个变量?它仍然是“n”,因为我们只关心这种情况下的变量,即数组大小?

谢谢!

2 个答案:

答案 0 :(得分:1)

在这种情况下,时间复杂度为0.0,其中O(n*S)是数组中元素的平均值。

您可能想问:

  

为什么是平均值而不是最大值?

嗯,时间复杂度实际上是:

S

根据平均值定义,T = arr[1] + arr[2] + ... + arr[n] = (arr[1] + arr[2] + ... + arr[n])/n *n = = S *n 以来的最后一个等式为真。

Partition Problem的动态编程解决方案中,可以看到类似内容的常见示例,您创建了一个大小为(arr[1] + arr[2] + ... + arr[n])/n=S的二维数组(其中SUM是数组的总和) ,并逐步填充其中的每个条目,从而产生SUM/2 * n解决方案。

请注意,这通常被认为是pseudo polynomial复杂度,因为它在输入的大小上并不是真正的多项式。

答案 1 :(得分:0)

N通常用于表示问题的大小,对于这样的问题,通常是数组的大小。如果我们将每个元素的内容视为一个数字,那么该数字可以是最大值,因此我们将其视为常量,并且它不会在最终的复杂性表达式中起作用。