重复表达式的算法的复杂性(n *(n-1)/ 2)

时间:2016-08-24 04:41:57

标签: data-structures time-complexity

等式:(n(n-1))/2

如果您要编写一个算法来表示这个等式,那么这种算法的复杂性是什么?

2 个答案:

答案 0 :(得分:3)

(n*(n-1))/2的时间复杂度为O(n^2)

可以使用1+2+3+4+...n-1算法评估此表达式O(n)。并且“结果公式”的时间复杂度不必总是相同(或线性)。 Big O表示法不能像那样应用。

如果函数表示为(n*(n-1))/2,则其增长率将不是线性的。而且大O符号将讨论函数的增长率,因此(n*(n-1))/2的时间复杂度为O(n^2)

更具体地说,在为较大的n值计算(n*(n-1))时,您必须将数字中的每个数字存储在一个数组中,然后将它们相乘。这将花费O(N^2)时间复杂度,其中N是数字位数。

答案 1 :(得分:1)

(n*(n-1))/2可以表示为(1 + 2 + ... + (n-1))。使用此扩展表达式查找总和将具有O(n)时间复杂度和O(1)空间复杂度。

如果您不将(n*(n-1))/2扩展为sum-expression,则O(1)需要(n*(n-1))/2时间复杂度。

为什么O(n)扩展(sum)表达式?

由于您将通过逐个考虑(n-1)元素来进行添加。 因此,O(n)被视为与O(n-1)相同。